在 MySQL 8.0 中添加授权用户并允许所有 IP 访问的步骤如下(注意:此配置仅适用于本地开发环境,生产环境切勿开放 root 用户远程访问):

1. 登录 MySQL

mysql -u root -p

输入当前 root 用户密码登录。

2. 创建远程访问用户(使用 IDENTIFIED BY 语法)

CREATE USER 'root'@'%' IDENTIFIED BY '123456';
  • 'root'@'%':创建名为 root 的用户,允许从任何 IP 地址连接
  • IDENTIFIED BY '123456':设置密码为 123456

3. 授予所有权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
  • ALL PRIVILEGES:授予所有权限(生产环境建议按需分配)
  • *.*:对所有数据库的所有表生效
  • WITH GRANT OPTION:允许该用户将自己拥有的权限授予他人

4. 刷新权限

FLUSH PRIVILEGES;

5. 确认用户权限

SELECT user, host, authentication_string FROM mysql.user WHERE user = 'root';

应看到类似以下输出:

+------+------+-------------------------------------------+
| user | host | authentication_string                     |
+------+------+-------------------------------------------+
| root | %    | $A$005$........(加密后的密码)........... |
+------+------+-------------------------------------------+

6. 修改 MySQL 配置文件(可选)

如果仍然无法远程连接,可能需要修改 MySQL 配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf,注释掉 bind-address

# bind-address = 127.0.0.1

然后重启 MySQL 服务:

sudo systemctl restart mysql

注意事项

  1. 安全风险:此配置会使 root 用户可以从任意 IP 访问,仅适用于本地开发环境
  2. 防火墙:确保服务器防火墙开放 3306 端口
  3. 生产环境建议

    • 创建专用用户而非使用 root
    • 限制访问 IP(如 'user'@'192.168.1.%'
    • 使用强密码
    • 定期审计用户权限

验证远程连接时,可以使用以下命令测试:

mysql -h <服务器IP> -u root -p

标签: none

添加新评论