本编文章是针对MYSQL-8.0.11安装后root账户无法远程登录,和修改账户密码。
环境为:CentOS 7.3 + Mysql8.0.11
yum源: mysql官方下载链接
下载后执行:
sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm
1:安装Mysql8.0
sudo yum install mysql-community-server -y
2:启动Mysql
sudo systemctl start mysqld.service
# 检查是否启动成功
sudo systemctl status mysqld.service
3: 查看数据库初始密码
sudo grep 'temporary password' /var/log/mysqld.log
4:链接数据库修改Root账户密码
shell> mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass1234!';
5:修改/etc/my.cnf文件
# update /etc/my.cnf
default-authentication-plugin=mysql_native_password
6:连接mysql 查看user表
> mysql -u root -p
> use mysql;
> select host, user, authentication_string, plugin from user;
root账户为默认的密码加密方式是:caching_sha2_password;而现在很多客户端工具还不支持这种加密认证方式,连接测试的时候就会报错:client does not support authentication protocol requested by server; consider upgrading MySQL client,这里的错误信息就是不支持身份认证方式,没关系,我们在上面第5步已经修改了默认加密方式
7:修改root账户远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '密码' WITH GRANT OPTION;
请注意如果在执行上面这句出现下面错误时
请先创建一个用户
# 连接数据库
> mysql -u root -p
# 切换数据库
> use mysql;
# 创建用户(user:用户名; %:任意ip, 也可以指定固定IP,root默认是localhost; 登录密码: MyPassword123!)
> CREATE USER 'user'@'%' IDENTIFIED BY 'MyPassword123!';
# 修改user用户的加密方式
> ALTER USER 'alenx'@'%' IDENTIFIED WITH mysql_native_password BY 'MyPassword123!';
授权,默认创建的用户权限是usage, 就是无权限,只能登录而已,
> grant all on *.* to 'user1'@'%';
{ 注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT all ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION; }
到这里可以用Navicat通过刚创建的用户连接数据库了,然后在Navicat里修改root的远程IP和加密方式。