1.mysql8.0之前版本设置远程访问
# 授权所有主机都可以通过root用户,密码123456,进行访问数据库
# 123456:给新增权限用户设置的密码
# %:代表所有主机,也可以具体到主机ip地址
# 适用于 MySQL 8.0之前的版本,可以直接授权
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
#刷新权限
flush privileges;
2.mysql8.0包括之后版本设置远程访问
# 授权所有主机都可以通过root用户,密码123456,进行访问数据库
# 123456:给新增权限用户设置的密码
# %:代表所有主机,也可以具体到主机ip地址
# MySQL 8.0之后的版本,需要先创建一个用户,再进行授权
create user root@'%' identified by '123456';
grant all privileges on *.* to root@'%' with grant option;
#刷新权限
flush privileges;
注:操作完后需刷新权限,不然以上命令不生效
#刷新权限
flush privileges;
3.mysql8版本开通远程访问,使用8版本之前的命令会遇到的问题
1. 使用8版本之前的开通远程访问命令会出现的情况
报错: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
原因:8版本后需先创建一个用户再进行授权
2.此时再操作8版本之后的开通远程访问命令还会报错
报错:ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'%'
原因:在grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;这个命令中mysql已创建了此用户但是授权的命令并未生效
解决:
1.可以直接对创建好了的root用户进行授权操作执行此命令:grant all privileges on *.* to root@'%' with grant option;
2.删除创建的用户再重新按照8版本之后的开通远程访问命令操作
#删除用户
drop user root@'%';
#开通远程访问(8版本后)
#创建用户
create user root@'%' identified by '123456';
#授权远程访问
grant all privileges on *.* to root@'%' with grant option;
#刷新权限
flush privileges;