MySQL实现外部访问

229 篇文章 ¥59.90 ¥99.00

在本文中,我们将探讨如何配置MySQL数据库以允许外部访问。外部访问允许其他计算机或网络通过网络连接到MySQL服务器,并执行数据库操作。我们将介绍必要的步骤和相应的源代码示例,以帮助您成功地配置MySQL以实现外部访问。

配置MySQL服务器

要允许外部访问,我们需要在MySQL服务器上进行一些配置更改。请按照以下步骤操作:

  1. 打开MySQL配置文件:首先,我们需要打开MySQL服务器的配置文件。该文件通常称为"my.cnf"或"my.ini",具体取决于您的操作系统和MySQL版本。您可以在MySQL安装目录中找到该文件。

  2. 绑定到所有IP地址:在配置文件中找到"bind-address"参数。默认情况下,它通常设置为"127.0.0.1",这表示MySQL仅允许本地主机访问。要允许外部访问,您需要将其更改为"0.0.0.0",以便MySQL绑定到所有可用的IP地址。如果您只想允许特定的IP地址访问MySQL,请将其设置为相应的IP地址。

    示例:

    bind-address = 0.0.0.0
    ```
    
    
  3. 更改监听端口(可选):默认情况下,MySQL使用3306端口进行监听。如果您希望更改监听端口,可以在配置文件中找到"port"参数,并将其设置为您想要的端口号。

    示例:

    port = 3306
    
  4. 保存并关闭文件:完成配置更改后,请保存并关闭MySQL配置文件。

  5. 重新启动MySQL服务器:要使配置更改生效,您需要重新启动MySQL

### 配置 MySQL 8.0 允许远程连接 为了使 MySQL 8.0 支持外部机器访问,需要完成以下几个方面的配置: #### 修改绑定地址 默认情况下,MySQL 绑定到本地回环地址 `127.0.0.1`,这会阻止来自其他主机的连接请求。可以通过修改 MySQL 的配置文件 `/etc/mysql/my.cnf` 或者 `/etc/mysql/mysql.conf.d/mysqld.cnf` 中的 `bind-address` 参数来实现[^1]。 将以下内容更改为 `0.0.0.0` 或指定服务器 IP 地址: ```ini bind-address = 0.0.0.0 ``` 保存更改并重启 MySQL 服务以应用新的配置: ```bash sudo systemctl restart mysql ``` #### 创建或更新用户权限 默认情况下,MySQL 用户仅限于从 localhost 访问数据库。要允许特定用户从任何地方访问,需执行 SQL 命令创建新用户或将现有用户的权限扩展至 `%`(表示任意主机)。例如,对于 root 用户可运行以下命令][^[^23]: ```sql CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 注意替换 `'your_password'` 为你自己的密码字符串,并确保该操作的安全性。 另外,如果遇到认证插件问题导致客户端无法正常登录,则可能还需要调整身份验证方式为旧版加密方法(mysql_native_password)[^4]: ```sql ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES; ``` #### 开放防火墙端口 确认服务器上的防火墙规则已开放 MySQL 默认使用的 TCP 端口号 (通常是 3306),以便外部网络能够到达此服务。使用 ufw 巻护程序为例: ```bash sudo ufw allow 3306/tcp sudo ufw reload ``` 以上步骤完成后,应该可以从另一台计算机通过标准工具像 Navicat 或命令行界面成功建立与目标 MySQL 数据库实例之间的通信链路。 ```python import pymysql.cursors connection = pymysql.connect(host='server_ip', user='root', password='your_password', database='test_db', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) try: with connection.cursor() as cursor: sql = "SELECT version();" cursor.execute(sql) result = cursor.fetchone() print(result) finally: connection.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值