在MySQL 8.0之前的版本中,可以直接通过授权命令为root用户开启远程访问。
步骤:
授权所有主机通过root用户进行访问:
sqlGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
刷新权限:
sqlFLUSH PRIVILEGES;
在MySQL 8.0及之后的版本中,需要先创建用户,再进行授权。
步骤:
创建用户:
sqlCREATE USER 'root'@'%' IDENTIFIED BY '123456';
授权所有主机通过root用户进行访问:
sqlGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
刷新权限:
sqlFLUSH PRIVILEGES;
使用MySQL 8.0之前的命令会出现的问题 如果在MySQL 8.0版本中使用MySQL 8.0之前的命令:
sqlGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' 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 '123456' WITH GRANT OPTION' at line 1
原因: MySQL 8.0版本后需要先创建一个用户再进行授权。
执行MySQL 8.0版本的命令可能出现的错误 如果再次执行MySQL 8.0版本的命令:
sqlCREATE USER 'root'@'%' IDENTIFIED BY '123456';
会报以下错误:
ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'%'
原因: 在GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
命令中,MySQL已创建了此用户但是授权的命令并未生效。
解决方案
直接对创建好的root用户进行授权:
sqlGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
或者,删除已创建的用户,再重新按照MySQL 8.0版本之后的命令操作:
sql-- 删除用户
DROP USER 'root'@'%';
-- 创建用户
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
-- 授权远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
本文作者:GYC
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!