MySQL设置远程登录(为root用户设置远程登陆权限)

MySQL8以前的版本

如果是8以前的版本可以使用

-- GRANT privileges ON database_name.table_name TO 'username'@'hostname' IDENTIFIED BY 'password';
-- privileges表示授予的权限,database_name和table_name表示要授权的数据库和表名,username和hostname表示要授权的用户和主机名,password表示用户的密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;

重启MySQL服务,此时应当可以连接成功。

MySQL8及以上版本

问题

在MySQL8之后,使用 GRANT 命令的使用不会默认创建新账户,所以如果你执行上面的语句显示

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '123456' WITH GRANT OPTION' at line 1

恭喜你,你应当使用的是MySQL8的版本。

解决

既然问题是使用GRANT时不会创建新账户,那我们先新建一下就好了。

-- 创建'root'@'%'账户
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
-- 给'root'@'%'账户设置权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
-- 刷新权限
flush privileges;

此时,应当有两个root账户

use mysql;
select host, user, authentication_string, plugin from user;

应该可以看到有两个root账户,一个是'root'@'localhost''root'@'%'

看一下两个账号的加密插件是不是caching_sha2_password,至于为什么要看,具体原因往下看。

这次应该可以正常连接了。

如果连接的时候显示plugin caching_sha2_password could not be loaded,那我们就需要改一下加密插件了。

方法一:

这种方法应当在创建'root'@'%'之前设置,不然就使用第二种更加方便。

可以理解为,

方法一是为之后所有新用户指定加密插件,

方法二是修改指定一个用户的加密插件。

修改my.ini文件,在[mysqld]下面新增

default_authentication_plugin=mysql_native_password

方法二:

alter user 'root'@'%' identified with mysql_native_password by '123456';
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值