CentOS7安装MySQL8
1.配置MySQL8.0安装源
sudo rpm -Uvh https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
2.安装MySQL8.0
sudo yum --enablerepo=mysql80-community install mysql-community-server
在出现需要输入yes/no的地方以下都选y
最后看到complete就是安装完了
3.启动MySQL服务
sudo service mysqld start
看下运行状态
service mysqld status
4.查看root临时密码
安装完MySQL之后,会生成一个临时的密码让root用户登录,输入以下命令查看
grep "a temporary password" /var/log/mysqld.log
5.更改临时密码
先用临时密码登录MySQL
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
查看密码验证策略
SHOW VARIABLES LIKE 'validate_password.%';
validate_password.length 密码的最小长度,默认是8,我们把它改成4
set global validate_password.length=4;
validate_password.policy 验证密码的复杂程度,我们把它改成0
set global validate_password.policy=0;
validate_password.check_user_name 用户名检查,用户名和密码不能相同,我们也把它去掉
set global validate_password.check_user_name=off;
现在再执行修改密码的命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
6.配置远程访问
用MySQL客户连接报不允许连接的错误,那是因为没开通远程访问的权限
GRANT ALL ON *.* TO 'root'@'%';
如果出现You are not allowed to create a user with GRANT错误
原因:当前user表中没有root - %记录,可以更新root - localhost为root - %
看下默认MySQL用户
use mysql;
select host, user, authentication_string, plugin from user;
发现root的host是localhost,不是%,那我们就加个host是%的root账号
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
update user set host = '%' where user = 'root';
出现问题:ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
原因显示:host+user应该是联合主键,冲突了
解决方法:
update user set host = '%' where user = 'root' and host='localhost';
再次给用户root授权
GRANT ALL ON *.* TO 'root'@'%';
flush privileges;
再查下用户
select host, user, authentication_string, plugin from user;
可以看到已经新增了host为%的root用户
然后再执行:
GRANT ALL ON *.* TO 'root'@'%';
7.Navicat连接MySQL
用Navicat连接MySQL还是会报错:
原因是MySQL8的加密方式规则不一样,是caching_sha2_password
把加密方式改成mysql_native_password就行了(或者使用最新的Navicat)
ALTER USER '[用户名]'@'%' IDENTIFIED WITH mysql_native_password BY '[密码]';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
加密方式以及改成了mysql_native_password