编辑
2024-03-07
DBNotes
00

目录

一、MySQL 8.0 之前的版本设置远程访问

一、MySQL 8.0 之前的版本设置远程访问

在MySQL 8.0之前的版本中,可以直接通过授权命令为root用户开启远程访问。

步骤:

  1. 授权所有主机通过root用户进行访问:

    sql
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
    • '123456'是root用户的密码
    • '%'代表所有主机,也可以具体到某个主机的IP地址。
  2. 刷新权限:

    sql
    FLUSH PRIVILEGES;

二、MySQL 8.0 及之后版本设置远程访问

在MySQL 8.0及之后的版本中,需要先创建用户,再进行授权。

步骤:

  1. 创建用户:

    sql
    CREATE USER 'root'@'%' IDENTIFIED BY '123456';
    • '123456'是root用户的密码
    • '%'代表所有主机,也可以具体到某个主机的IP地址
  2. 授权所有主机通过root用户进行访问:

    sql
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    • 第一个 * 表示所有数据库
    • 第二个 * 表示所有表
    • . 表示所有数据库中的所有表
  3. 刷新权限:

    sql
    FLUSH PRIVILEGES;

三、MySQL 8.0 版本中常见问题及解决方案

  1. 使用MySQL 8.0之前的命令会出现的问题 如果在MySQL 8.0版本中使用MySQL 8.0之前的命令:

    sql
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

    会报以下错误:

image.png

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版本后需要先创建一个用户再进行授权。

  1. 执行MySQL 8.0版本的命令可能出现的错误 如果再次执行MySQL 8.0版本的命令:

    sql
    CREATE USER 'root'@'%' IDENTIFIED BY '123456';

    会报以下错误:

image.png

ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'%'

原因:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;命令中,MySQL已创建了此用户但是授权的命令并未生效。

解决方案

  • 直接对创建好的root用户进行授权:

    sql
    GRANT 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;

引用

_Dapin!--Mysql设置远程访问

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:GYC

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!