Mysql设置root用户远程访问

登录mysql数据库

mysql -u root -p

切换mysql数据库

use mysql

查看数据库当前有访问权限的信息

SELECT User, Password, Host FROM user;
mysql> SELECT User, Password, Host FROM user;
+------+-------------------------------------------+-----------+
| User | Password                                  | Host      |
+------+-------------------------------------------+-----------+
| root | *D0FAD46F5E73405CDBA17B663D1648C5AAC6D465 | localhost |
| root | *A528827CA1B493E1175FDF498E0651E917BE4B10 | lhk.mysql |
| root | *A528827CA1B493E1175FDF498E0651E917BE4B10 | 127.0.0.1 |
| root | *A528827CA1B493E1175FDF498E0651E917BE4B10 | ::1       |
+------+-------------------------------------------+-----------+

设置访问权限

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

其中"*.*"代表所有资源所有权限, “'root'@%”其中root代表账户名,%代表所有的访问地址,也可以使用一个唯一的地址进行替换,只有一个地址能够访问。如果是某个网段的可以使用地址与%结合的方式,如10.0.42.%。IDENTIFIED BY 'root',这个root是指访问密码。WITH GRANT OPTION允许级联授权。
刷新访问权限表(不要忘了)

FLUSH PRIVILEGES;

转自:

https://blog.csdn.net/zhazhagu/article/details/81064406

 

<think>嗯,用户问的是如何在MySQL中临时允许root用户远程访问。首先,我需要确认用户的需求。他们可能需要在某个特定情况下让root用户从远程连接数据库,比如调试或者临时访问,但又不希望长期开放这个权限,因为root权限太大,存在安全风险。 接下来,我得回忆一下MySQL设置步骤。通常,MySQL默认情况下root用户只能本地连接,即localhost。要允许远程访问,需要做两件事:一是修改用户的host字段为允许远程的IP或者%,二是可能调整MySQL的配置文件,注释掉bind-address或者改为0.0.0.0,以监听所有接口。不过用户提到的是“临时”访问,所以可能需要考虑是否重启服务会影响,或者有没有更快捷的方法。 然后,用户可能需要的是临时生效的设置,也就是说不需要永久修改配置文件。这时候可能需要考虑使用SQL命令直接更新用户权限,而不必修改my.cnf中的bind-address,因为修改配置文件通常需要重启MySQL服务,这可能不符合“临时”的要求。但有时候,如果MySQL已经绑定了127.0.0.1,那么即使授权了用户,也无法远程连接,所以可能需要临时调整bind-address,并重启服务,不过这样就不是完全临时的了。这里可能存在矛盾,需要明确用户的环境。 或者,用户可能已经有一个允许远程访问的配置,只是需要给root用户授权。这时候只需要执行GRANT语句,刷新权限即可。但需要注意的是,如果MySQL的bind-address仍然是127.0.0.1,那么即使授权了,远程也无法连接。所以需要确认bind-address的设置。如果用户无法修改配置文件,可能需要另一种方法,比如设置SSH隧道,但用户的问题明确是要设置MySQL允许远程访问。 可能的步骤是:首先检查MySQL的bind-address设置,如果绑定的是127.0.0.1,需要改为0.0.0.0或者注释掉,并重启服务。然后,登录MySQL,更新root用户的host为%,赋予远程访问权限,刷新权限。但如果是临时性的,可能需要在完成操作后,将bind-address改回来,并再次重启服务,同时撤销root远程访问权限。这才能算作临时设置。 但用户可能希望更简单,不需要重启服务的方法。如果bind-address已经是0.0.0.0或者用户已经允许远程连接,那么只需要在MySQL中授权root用户即可。这时候,临时性可能意味着之后要撤销这个权限,而不是修改配置。 所以,可能的回答步骤是: 1. 登录MySQL,使用GRANT命令给root用户授权,允许从任何主机连接。 2. 刷新权限。 3. 完成后,撤销权限,并可能恢复bind-address设置(如果需要)。 不过,是否需要修改bind-address取决于当前配置。如果用户不确定,可能需要同时检查这两部分。此外,防火墙设置也可能影响,需要开放3306端口,但用户可能已经知道这点,或者问题不在这个层面。 最后,安全提示很重要,必须提醒用户这样做有风险,完成后应及时撤销权限,并考虑使用更安全的方法,比如使用非root用户,限制IP等。</think>以下是MySQL临时允许root用户远程访问设置步骤及注意事项(完成后请及时恢复安全设置): 1. 检查当前root权限 ```sql SELECT host, user FROM mysql.user WHERE user = 'root'; ``` 默认root通常仅允许localhost访问 2. 临时授权远程访问(任意IP) ```sql GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 3. 修改配置文件(临时生效) ```bash # 修改my.cnf/mysqld.cnf [mysqld] # bind-address = 127.0.0.1 → 注释掉或改为0.0.0.0 ``` 4. 重启服务(部分系统需要) ```bash sudo systemctl restart mysql # 或 sudo service mysql restart ``` 5. 验证连接(新终端) ```bash mysql -u root -h 服务器IP -p ``` *临时使用后请立即恢复安全设置:* 1. 撤销远程访问权限 ```sql DROP USER 'root'@'%'; FLUSH PRIVILEGES; ``` 2. 恢复配置文件并重启服务 *安全建议* 1. 建议使用SSH隧道代替直接远程访问 2. 推荐创建专用用户并限制访问IP 3. 重要操作完成后及时关闭3306端口防火墙 4. 生产环境不建议开启root远程访问 请根据实际需求选择临时开启时长,最长不建议超过24小时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值