问题:安装完8.0.28版本的mysql之后,为了可以使用navicat可视化工具远程连接数据库,进行授权远程登录,执行授权语句时失败:
如果你想允许用户root从ip为192.168.1.123的主机连接到mysql服务器,并使用root作为密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.123'IDENTIFIED BY 'password' WITH GRANT OPTION;
报了以下错误:
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 'linyi'' at line 1
原因:因为 MySQL8.0 以上将创建账户和赋予权限分开了,需要用两个语句创建账号,赋予远程权限;
具体操作步骤
1:登陆数据库
mysql -u root -p
2:使用mysql库
use mysql
3:创建一个用户用于远程登录(test是用户名,test_pwd是密码,可以替换为自己的)
create user 'test'@'%' identified by 'test_pwd';
4:授权远程登录(注意test改为上面创建的用户名,ip可以换为自己的ip)
#仅授权某一个ip访问
grant all privileges on *.* to 'test'@'183.129.241.197' with grant option;
# 允许所有 ip 远程访问(危险!)
grant all privileges on *.* to 'test'@'%' with grant option;
5:刷新
FLUSH PRIVILEGES;
(注意:如果是新的服务器,请开放3306端口,才能是远程工具正常连接:firewall-cmd --zone=public --add-port=3306/tcp --permanent)