MySQL允许远程登录配置

本文详细介绍如何在MySQL中配置远程连接,包括通过修改user表的host字段实现远程访问,以及使用GRANT语句授权特定用户从任意主机连接。此外,还介绍了创建新用户并设置其权限的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、查看user表
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host,user,password from user;
+-----------------------+---------+-------------------------------------------+
| host                  | user    | password                                  |
+-----------------------+---------+-------------------------------------------+
| localhost             | root    | *D2DC387634BA98FE0528FC555B66B391FD009465 |
| localhost.localdomain | root    | *D2DC387634BA98FE0528FC555B66B391FD009465 |
| 127.0.0.1             | root    | *D2DC387634BA98FE0528FC555B66B391FD009465 |
| localhost             |         |                                           |
| localhost.localdomain |         |                                           |
+-----------------------+---------+-------------------------------------------+
5 rows in set (0.00 sec)

2、设置远程连接
第一种(改表法):
修改host字段的值,将localhost修改成需要远程连接数据库的ip地址或者直接修改成%。
修改成%表示,所有主机都可以通过root用户访问数据库。
mysql> update user set host='%' where user='root' and host='localhost';
运行上面语句可能会有个报错:
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
不用管,直接继续执行:
mysql> flush privileges;

或者直接创建一个新用户允许外联:
insert into mysql.user(Host,User,Password) values("%","用户名",password("密码"));
grant all privileges on `库名或*`.* to '用户名'@'%' identified by '密码';  
flush privileges;

第二种(授权法):
如使用root从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
mysql> flush privileges;

如果你想允许用户myuser从ip为192.168.0.77的主机连接到mysql服务器,并使用12345作为密码
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.0.77' IDENTIFIED BY '12345' WITH GRANT OPTION;
mysql> flush privileges;

注:
数据库添加用户语句:
grant all privileges on testdb.* to 'test_user'@'localhost' identified by "密码" with grant option;
WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。
在创建操作用户的时候不指定WITH GRANT OPTION选项将导致该用户不能使用GRANT命令创建用户或者给其它用户授权。
如果不想这个用户有这个grant的权限,可以不加这句
 

转载于:https://www.cnblogs.com/deverz/p/10985008.html

在Linux系统中,要执行MySQL允许远程登录,您需要完成以下几个步骤: 1. 配置MySQL用户权限:首先,您需要确保MySQL数据库中存在一个具有远程登录权限的用户。可以通过登录MySQL,然后为特定用户授予远程登录权限。例如: ```sql GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%' IDENTIFIED BY 'password'; ``` 这条命令会给`username`用户授予对`database_name`数据库的全部权限,并允许从任何主机(`'%'`代表任何IP地址)连接到MySQL服务器。 2. 修改MySQL配置文件:您需要编辑MySQL配置文件`my.cnf`(或`my.ini`在Windows上),通常位于`/etc/mysql/`目录下。需要修改的部分是`[mysqld]`段,设置`bind-address`属性为`0.0.0.0`,这将允许MySQL监听所有网络接口: ```ini [mysqld] bind-address = 0.0.0.0 ``` 请注意,出于安全考虑,现在更推荐使用`mysql_native_password`方法来代替不再安全的`password()`函数。 3. 重启MySQL服务:更改配置文件后,需要重启MySQL服务以使更改生效。在Linux中,您通常可以使用如下命令来重启服务: ```bash sudo systemctl restart mysql ``` 或者,根据您的系统版本和配置,您可能需要使用: ```bash sudo service mysql restart ``` 4. 检查防火墙设置:如果您的Linux服务器有防火墙开启,确保相应的端口(默认为3306)对远程主机开放。这可以通过修改防火墙规则来实现。例如,使用iptables,您可以添加规则允许入站流量: ```bash sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT ``` 或者,在使用firewalld的系统中: ```bash sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp sudo firewall-cmd --reload ``` 5. 测试远程登录:最后,您可以在任何远程计算机上尝试连接到MySQL服务器,使用如下命令: ```bash mysql -u username -p -h server_ip_address ``` 将`username`替换为您的MySQL用户名,`server_ip_address`替换为服务器的IP地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值