mysql 赋予任何主机访问数据的权限

本文介绍如何设置MySQL服务器允许从任何主机远程访问。通过四步操作:连接MySQL服务器、赋予root用户远程访问权限、刷新权限设置并退出MySQL,实现MySQL远程访问功能。

1、f:\mysql\bin\>mysql   -h   localhost   -u   root //这样应该可以进入MySQL服务器

2、mysql>GRANT   ALL   PRIVILEGES   ON   *.*   TO   'root'@'%'   WITH   GRANT   OPTION //赋予任何主机访问数据的权限

3、mysql>FLUSH   PRIVILEGES //修改生效

4、mysql>EXIT //退出MySQL服务器

这样就可以在其它任何的主机上以root身份登录啦!

转载于:https://www.cnblogs.com/chenchenbaba/p/5855438.html

<think> 我们参考了多个引用,总结出设置MySQL允许任意主机访问的方法通常需要两个关键步骤: 1. 修改MySQL用户表,允许用户从任意主机('%')连接。 2. 修改MySQL配置文件,将绑定地址改为0.0.0.0(即监听所有网络接口)或注释掉bind-address。 具体步骤如下: ### 步骤1:修改用户权限 我们需要更新`mysql.user`表,将指定用户的`host`字段改为`'%'`(表示允许从任意主机连接),并赋予相应权限。 方法一:使用UPDATE语句(注意安全更新模式可能导致失败) ```sql -- 登录MySQL mysql -u root -p -- 切换到mysql数据库 USE mysql; -- 查看当前用户及主机 SELECT host, user FROM user; -- 更新root用户的host为%(注意:如果已有root@localhost,可以直接更新,或者添加一条新的记录) UPDATE user SET host='%' WHERE user='root'; -- 如果UPDATE失败(比如因为安全更新模式),可以先关闭安全更新模式(在MySQL命令行中临时设置): SET SQL_SAFE_UPDATES=0; UPDATE user SET host='%' WHERE user='root'; SET SQL_SAFE_UPDATES=1; -- 或者使用GRANT命令(推荐,因为更安全且能同时处理权限) -- 赋予root用户从任意主机访问权限(如果root用户不存在,会创建) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION; ``` 方法二:使用GRANT命令(更推荐) 如果不想直接修改表,可以使用GRANT命令,它会自动更新权限表,并且更安全。 ```sql -- 赋予root用户从任意主机访问权限(如果root@%不存在则创建) 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; ``` 然后,刷新权限: ```sql FLUSH PRIVILEGES; ``` ### 步骤2:修改MySQL配置文件 修改配置文件以使MySQL服务监听所有网络接口(默认只监听localhost)。 1. 找到MySQL的配置文件,位置可能因系统而异: - Linux: 通常是`/etc/mysql/mysql.conf.d/mysqld.cnf`或`/etc/my.cnf`或`/etc/mysql/my.cnf` - Windows: 通常是`my.ini` 2. 在配置文件中找到`bind-address`,将其改为`0.0.0.0`(表示监听所有IPv4地址)或注释掉(前面加`#`): ```ini bind-address = 0.0.0.0 ``` 或者: ```ini # bind-address = 127.0.0.1 ``` 3. 保存配置文件并重启MySQL服务: - Linux: ```bash sudo systemctl restart mysql # 或 sudo service mysql restart ``` - Windows: 在服务管理器中重启MySQL服务。 ### 步骤3:检查防火墙 确保服务器的防火墙允许MySQL的端口(默认为3306)的入站连接。 ### 常见问题 - 如果出现错误1175(安全更新模式),需要临时禁用安全更新模式(如步骤1中所述)或使用GRANT命令。 - 修改配置文件后必须重启MySQL服务。 - 如果使用云服务器,还需检查安全组规则是否开放3306端口。 完成以上步骤后,应该可以通过任意主机访问MySQL服务器。 §§相关问题§§ 1. 如何检查MySQL是否允许远程连接? 2. 为什么修改了用户权限和配置文件后仍然无法远程访问MySQL? 3. MySQL 8.0版本在设置远程访问时有什么不同? 4. 如何为特定IP地址而不是所有主机(%)授予访问权限? </think> ### MySQL配置允许任意主机访问的方法 配置MySQL允许任意主机访问需要两个关键步骤:修改用户权限和调整服务器配置。以下是详细操作指南: #### 步骤1:修改用户授权(推荐方法) 通过`GRANT`命令授权用户从任意主机访问(无需直接修改系统表): ```sql -- 登录MySQL服务器 mysql -u root -p -- 创建或修改用户权限(自动更新host) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION; -- 刷新权限 FLUSH PRIVILEGES; ``` > 此方法自动处理用户记录,避免直接修改`mysql.user`表的风险[^2][^3]。 #### 步骤2:修改MySQL配置文件 修改服务器绑定地址使其监听所有网络接口: 1. 打开配置文件(路径示例): ```bash sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf ``` 2. 修改`bind-address`值: ```ini bind-address = 0.0.0.0 # 原值通常是127.0.0.1 ``` 3. 重启MySQL服务: ```bash sudo systemctl restart mysql ``` #### 备选方案:直接修改用户表 若需直接修改系统表(注意安全风险): ```sql UPDATE mysql.user SET host='%' WHERE user='root'; FLUSH PRIVILEGES; ``` > 可能触发错误1175(安全模式),需临时禁用:`SET SQL_SAFE_UPDATES=0;`[^5] #### 验证步骤 1. 检查用户权限: ```sql SELECT host, user FROM mysql.user WHERE user='root'; ``` 应显示`host='%'` 2. 检查监听端口: ```bash sudo netstat -tuln | grep 3306 ``` 应显示`0.0.0.0:3306` #### 注意事项 1. **安全警告**:`root@%`权限过高,建议创建专用用户 2. **防火墙配置**:需开放3306端口 ```bash sudo ufw allow 3306/tcp ``` 3. **云服务器**:需配置安全组规则允许3306入站
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值