本文从以下几个方面来展示linux上mysql安装及使用的过程,mysql其它版本也可借鉴:
- MySQL yum源安装
- 安装后,首次登录mysql以及密码配置
- 远程登录问题(Navicat为例)
一、CentOS7+MySQL8.0,yum源安装
1.安装mysql前应卸载原有mysql(没有请忽略)
1.1找出原有mysql安装目录
rpm -qa | grep mysql
1.2依次删除上述文件
yum remove mysql-community-libs-8.0.17-1.el7.x86_64
yum remove mysql80-community-release-el7-3.noarch
yum remove mysql-community-common-8.0.17-1.el7.x86_64
yum remove mysql-community-client-8.0.17-1.el7.x86_64
yum remove mysql-community-libs-compat-8.0.17-1.el7.x86_64
yum remove mysql-community-server-8.0.17-1.el7.x86_64
1.3删除mysl配置文件
rm -rf /var/lib/mysql
rm /etc/my.cnf
rm -rf /usr/share/mysql-8.0
2.yum源安装mysql8.0
2.1下载repo源
可从mysql官网上获取到repo源
2.2将repo源传到centos虚拟机上
我这里使用xftp社区版,将.rpm文件传输到虚拟机上,可使用各类软件传输
2.3yum安装repo
yum install mysql80-community-release-el7-3.noarch.rpm
安装完毕后,进入/etc/yum.repos.d,可以看到刚加入的repo
完毕后,更新yum缓存
yum clean all
yum makecache
2.4yum安装mysql
2.4.1修改安装版本(默认最高版本)
因为官网最新的repo源中,包括了mysql的许多版本,可以通过cat /etc/yum.repos.d/mysql-community.repo ,修改各版本的enabled的值来确定安装哪个版本
cat /etc/yum.repos.d/mysql-community.repo
上图可看到,5.6和5.7的版本,enabled值为0,为不安装;8.0及其它工具,enabled值为1,为安装。默认安装最高版本,可以不修改
2.4.2执行安装命令
yum install mysql-community-server
可能出现的问题:
由于网络问题,可能会出现缺少依赖的问题
Delta RPMs disabled because /usr/bin/applydeltarpm not installed
这时只需要安装对应缺少的依赖即可
yum -y install deltarpm
另外,因为网络环境差,网络速度慢,与mysql官方源连接慢等原因,安装过程中,可能会出现中断等问题,多次执行yum install,直到安装完毕即可。
二、登录mysql以及修改密码
1.启动mysql服务
1.1开启mysql服务
systemctl start mysqld
1.2设置mysql服务开机自启
systemctl enable mysqld
systemctl daemon-reload
1.3查看mysql服务状态
systemctl status mysqld
active(running)即为服务已开启
2.查看mysql初始登录密码
mysql8.0安装时,已经分配了默认初始密码,需要手动查看
grep 'temporary password' /var/log/mysqld.log
3.修改mysql登录密码
注意:官方源中安装的mysql默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误
本文不推荐修改默认的密码安全策略,给出两种修改密码的方式。
3.1进入数据库中修改root用户密码
mysql -uroot -p
Enter password:#输入密码,密码为查看的初始密码
use mysql
ALTER user 'root'@'localhost' IDENTIFIED BY 'Pwd@123';
3.2通过mysql自带的修改密码脚本进行修改
直接输入
/usr/bin/mysql_secure_installation #修改密码的脚本
具体过程为,先输入初始密码,再输入新密码,可交互性高
注意,输入新密码后,会出现几个问句
- Remove anonymous users?是否移除默认用户,建议no
- Disallow root login remotely?是否不允许root用户远程连接,想要远程连接,必须no
- Reload privilege tables now?是否现在加载表,建议yes
4.登录mysql
现在可通过
mysql -uroot -p
输入密码登录到mysql了
三、远程登录
1.修改root用户的host
首先登录mysql数据库,并切换到mysql库
use mysql
再查看root用户的host属性
select host,user from user;
root用户的host默认为localhost,需要改为%,即可允许远程登录数据库
update user set host='%' where user='root';
修改完成后,使用以下命令,使修改有效
flush privileges;
2.使用Navicat登录
在使用 Navicat for Mysql连接mysql 8.0时会报如下错误:
Authentication plugin 'caching_sha2_password' cannot be loaded:
这是由于navicat密码加密方式为caching_sha2_password,而mysql默认加密格式为mysql_native_password
只需修改root用户密码加密方式与navicat相同即可
执行命令
update user set plugin='mysql_native_password' where user='root';
flush privileges;
3.出现的问题
因为已经改变了root用户密码的加密方式,导致mysql不能正确解密原先设置的密码,导致密码失效,无法登陆到mysql
下面介绍一种,无密码登录mysql,及忘记密码后,修改密码的方法
3.1修改配置文件,跳过权限验证
进入 vi /etc/my.cnf,在[mysqld]中,添加一行 skip-grant-tables
保存退出后,重启mysql服务
systemctl restart mysqld
此时mysql数据库,可以进行无密码登录
3.2无密码登录mysql
先把密码设置为空
mysql -uroot -p
Enter password:#输入密码,此时密码为空,可直接Enter
use mysql
update user set authentication_string='' where user='root';
3.3修改配置文件,删除 skip-grant-tables
删除第一步中添加的代码
3.4执行脚本重新修改密码
直接输入
/usr/bin/mysql_secure_installation #修改密码的脚本
具体过程为,先输入初始密码,再输入新密码,可交互性高
注意,输入新密码后,会出现几个问句
- Remove anonymous users?是否移除默认用户,建议no
- Disallow root login remotely?是否不允许root用户远程连接,想要远程连接,必须no
- Reload privilege tables now?是否现在加载表,建议yes
此时,可用新更改的密码登录mysql
Navicat与mysql密码加密方式相同,也有了正确的密码,root用户也可以被远程访问,Navicat连接数据库成功
注意:使用其它软件,没有密码加密方式不同的问题,比如sqlyog与mysql加密方式相同,sqlyog可能会出现编码问题,本帖不做叙述。