Mysql 授予root在任意主机访问数据库的权限

在MySQL中授予root用户从任意主机访问数据库的权限,需执行以下操作步骤(以MySQL 5.7和8.0版本为例):

一、基础授权操作

  1. ‌登录MySQL服务器‌

    bash 
     
    mysql -u root -p
  2. ‌执行授权命令‌

    • ‌MySQL 5.7及以下版本‌:
      sql 
      GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
    • ‌MySQL 8.0+版本‌(需分两步):
      sql 
       
      CREATE USER 'root'@'%' IDENTIFIED BY '你的密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
  3. ‌刷新权限‌

    sql 
     
    FLUSH PRIVILEGES;

二、安全加固措施

  1. ‌修改MySQL配置文件‌
    编辑my.cnfmy.ini文件,注释或删除bind-address = 127.0.0.1,改为:

    ini 
     
    bind-address = 0.0.0.0

    重启MySQL服务使配置生效718。

  2. ‌防火墙配置‌
    开放3306端口(或自定义端口):

    bash 
     
    sudo ufw allow 3306/tcp

三、MySQL 8.0特有配置

  1. ‌修改加密规则‌(解决客户端兼容问题):
    sql 
     
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
  2. ‌检查用户权限表‌:
    sql 
     
    SELECT host, user FROM mysql.user;
    确认root用户的host字段值为%811。

四、安全建议

  1. ‌生产环境风险提示‌

    • 避免直接使用root@%,建议创建专用管理账户并限制IP范围17。
    • 使用强密码(包含大小写字母、数字和特殊字符)16。
    • 定期审计用户权限12。
  2. ‌替代方案‌
    创建受限的管理用户:

    sql 
     
    CREATE USER 'admin'@'192.168.1.%' IDENTIFIED BY '复杂密码'; GRANT SELECT, INSERT, UPDATE ON 指定数据库.* TO 'admin'@'192.168.1.%';

五、验证远程连接

在其他主机测试连接:

bash 
 
mysql -h 服务器IP -u root -p

‌注意‌:完成操作后应立即执行FLUSH PRIVILEGES使配置生效517。若仍无法连接,需检查防火墙规则和MySQL错误日志。

posted @ 2025-08-11 19:49  Mr.peter  阅读(177)  评论(0)    收藏  举报