mysql 5.7 bind_MySql 5.7 远程访问配置

本文指导如何在Ubuntu上修改MySQL的my.cnf配置文件,允许远程访问。通过将bind-address设置为0.0.0.0或特定IP,然后更新root用户的host为%,并授予所有权限,可以实现远程连接。注意在MySQL 5.7及更高版本中,GRANT语句的格式有所变化,避免使用IDENTIFIED BY。最后,确认远程访问已成功。

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

修改 bind-address

# for ubuntu

vim /etc/mysql/my.cnf

[mysqld]

bind-address=0.0.0.0 # 或者指定的IP

更新 mysql root 权限

mysql -uroot -pPASSWD

use mysql;

update user set host = "%" where user="root" limit 1;

GRANT ALL PRIVILEGES ON *.* TO "root"@"%" WITH GRANT OPTION;

FLUSH PRIVILEGES;

> 此处 GRANT ALL PRIVILEGES ON . TO "root"@"%" IDENTIFIED BY "PASSWD" WITH GRANT OPTION;

> 在以往的版本中,往往是 GRANT ALL PRIVILEGES ON . TO "root"@"%" IDENTIFIED BY "PASSWD" WITH GRANT OPTION;

> 多加了 IDENTIFIED BY "PASSWD",在 5.7 以后便会报错,提示 Using GRANT statement to modify existing user properties other than privileges is deprecated and will be removed in future release. Use ALTER USER statement for this operation.

到这里,基本上就可以远程访问了

mysql -uroot -pPASSWD -h IP

### 配置 MySQL 5.7 远程访问权限及设置教程 为了实现 MySQL 5.7远程访问功能,需要完成以下几个方面的操作: #### 修改绑定地址 默认情况下,MySQL 只会监听本地回环接口 `127.0.0.1`,这阻止了来自其他主机的连接请求。因此,第一步是修改 MySQL配置文件以允许外部 IP 地址的连接。 对于 Ubuntu 系统,默认的 MySQL 配置文件路径为 `/etc/mysql/mysql.conf.d/mysqld.cnf` 或者 `/etc/my.cnf`。打开该文件并找到如下行: ```ini bind-address = 127.0.0.1 ``` 将其注释掉或者更改为服务器的实际公网 IP 地址或通配符 `0.0.0.0` 来接受所有网络接口上的连接请求[^4]。 保存更改后重启 MySQL 服务使改动生效: ```bash sudo systemctl restart mysql ``` #### 创建支持远程登录的用户并赋予相应权限 创建一个新的数据库账户专门用于远程访问,并授予其必要的权限范围。以下是具体 SQL 命令示例: 假设要建立用户名为 `remote_user` 密码为 `password123` 并能从任意位置 (`%`) 登录,则执行下面语句: ```sql CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password123'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 上述命令中的 `%` 表示任何客户端都可以尝试通过此账号进行认证;如果只希望特定IP能够成功验证则替换百分号部分为实际目标机器地址如 `'192.168.1.%'`[^5]^。 注意,在生产环境中应谨慎分配完全控制权(`ALL PRIVILEGES`)给非信任源,可以根据需求调整许可级别至最低限度满足业务逻辑即可。 #### 调整防火墙规则开放端口 即使完成了以上两步工作也可能因为操作系统层面的安全策略而无法正常通信。确认当前运行环境下的防火墙上已开启标准 MySQL 默认使用的TCP协议第3306号端口号。 如果是基于Linux发行版且启用了UFW(Uncomplicated Firewall),可以通过下列指令放行指定端口流量: ```bash sudo ufw allow 3306/tcp sudo ufw reload ``` 同样道理适用于SELinux场景下也需要适当放宽安全上下文约束条件来保障合法的数据交换过程顺利开展[^2]. 至此应该已经解决了大部分常见阻碍因素使得远端设备得以无障碍地接入到部署有MYSQL实例的服务节点之上. ```python # Python测试脚本片段展示如何利用 pymysql 库构建简单的查询演示程序. import pymysql.cursors connection = pymysql.connect(host='your_server_ip', user='remote_user', password='password123', database='test_db', cursorclass=pymysql.cursors.DictCursor) try: with connection.cursor() as cursor: sql = "SELECT version();" cursor.execute(sql) result = cursor.fetchone() finally: connection.close() print(result['version()']) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值