凌峰创科服务平台

如何访问Linux MySQL数据库服务器?

目录

  1. 前提条件:确保服务器已安装并运行 MySQL
  2. 访问方式一:在 Linux 服务器本地访问
  3. 访问方式二:从另一台 Linux/Mac 客户端远程访问
  4. 访问方式三:从 Windows 客户端远程访问
  5. 访问方式四:通过编程语言连接
  6. 常见问题与排查
  7. 安全最佳实践

前提条件:确保服务器已安装并运行 MySQL

在尝试访问之前,请确认你的 Linux 服务器上已经安装了 MySQL 或其分支(如 MariaDB),并且服务正在运行。

如何访问Linux MySQL数据库服务器?-图1
(图片来源网络,侵删)

检查 MySQL 服务状态:

# 对于使用 systemd 的系统 (如 Ubuntu 16.04+, CentOS 7+)
sudo systemctl status mysql
# 对于使用 SysVinit 的系统 (如 CentOS 6, Ubuntu 14.04)
sudo service mysql status

如果服务未运行,请启动它:

sudo systemctl start mysql
# 或者
sudo service mysql start

设置 root 用户密码(如果尚未设置): 首次安装后,建议为 root 用户设置一个安全的密码。

sudo mysql_secure_installation

这个交互式脚本会引导你完成:

如何访问Linux MySQL数据库服务器?-图2
(图片来源网络,侵删)
  • 设置 root 密码
  • 移除匿名用户
  • 禁止 root 远程登录(推荐)
  • 移除测试数据库
  • 重新加载权限表

访问方式一:在 Linux 服务器本地访问

如果你正在登录的服务器本身就是 MySQL 数据库所在的服务器,这是最简单的方式。

方法 A: 使用 mysql 命令行客户端 (推荐)

这是最直接、最常用的方式。

  1. 打开终端。
  2. 输入以下命令并回车。root 用户没有密码,直接按回车即可。
    mysql -u root -p
    • -u:指定用户名,这里是 root
    • -p:提示输入密码。
  3. 输入密码后,你将看到 mysql> 提示符,表示已成功连接。

方法 B: 使用 sudo 访问

如何访问Linux MySQL数据库服务器?-图3
(图片来源网络,侵删)

在某些系统(如 Ubuntu)中,root MySQL 用户可能对应于系统的 root 用户,你可以使用 sudo 来登录,此时可能不需要密码。

sudo mysql

这种方式会以 root@localhost 的身份登录,并且通常不会提示输入 MySQL 密码。

连接成功后,你可以执行 SQL 命令,

-- 查看所有数据库
SHOW DATABASES;
-- 创建一个新数据库
CREATE DATABASE my_app_db;
-- 使用这个数据库
USE my_app_db;
-- 查看当前数据库的所有表
SHOW TABLES;
-- 退出
EXIT;

访问方式二:从另一台 Linux/Mac 客户端远程访问

你需要从另一台计算机(客户端)访问 MySQL 服务器,这需要网络配置。

步骤 1: 在 MySQL 服务器上进行配置

  1. 登录到 MySQL 服务器(使用本地访问方式)。

  2. 允许远程用户登录,默认情况下,出于安全考虑,MySQL 不允许 root 远程登录,你应该为应用创建一个专用的用户。

    -- 登录后执行
    CREATE USER 'remote_user'@'%' IDENTIFIED BY 'a_strong_password';
    • 'remote_user':你想要创建的用户名。
    • 这个通配符表示该用户可以从任何 IP 地址连接,为了更安全,你可以指定客户端的 IP 地址,'192.168.1.100'
    • 'a_strong_password':为该用户设置一个强密码。
  3. 为该用户授予访问权限

    -- 授予所有数据库的所有权限(不推荐用于生产环境)
    GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%';
    -- 更安全的方式:只授予特定数据库的权限
    GRANT ALL PRIVILEGES ON my_app_db.* TO 'remote_user'@'%';
    -- 刷新权限,使更改生效
    FLUSH PRIVILEGES;
  4. 检查防火墙设置,MySQL 默认使用 3306 端口,确保服务器的防火墙允许来自客户端的 3306 端口入站流量。

    # 使用 UFW (Ubuntu)
    sudo ufw allow 3306/tcp
    # 使用 firewalld (CentOS/RHEL)
    sudo firewall-cmd --permanent --add-port=3306/tcp
    sudo firewall-cmd --reload
    # 使用 iptables
    sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
    sudo iptables-save > /etc/iptables/rules.v4

步骤 2: 在客户端计算机上连接

使用 mysql 命令行客户端,指定服务器的 IP 地址或主机名。

# 格式: mysql -h [服务器IP] -u [用户名] -p
mysql -h 192.168.1.50 -u remote_user -p

然后输入你为 remote_user 设置的密码。


访问方式三:从 Windows 客户端远程访问

Windows 用户通常使用图形化工具来连接,这比命令行更直观。

推荐的图形化客户端工具:

  1. MySQL Workbench (官方出品,功能强大,免费)
  2. DBeaver (支持多种数据库,通用性强,免费)
  3. Navicat for MySQL (商业软件,界面友好,功能丰富)

连接步骤 (以 MySQL Workbench 为例):

  1. 下载并安装 MySQL Workbench。
  2. 打开软件,点击 号添加一个新的连接。
  3. 设置连接参数:
    • Connection Name: 给这个连接起一个名字,如 "My Remote Server"。
    • Hostname (or IP Address): 填写你的 MySQL 服务器的公网 IP 或内网 IP。
    • Port: 默认是 3306
    • Username: 填写你创建的远程用户名,如 remote_user
  4. 点击 "Test Connection"。
  5. 在弹出的窗口中输入该用户的密码。
  6. 如果连接成功,点击 "OK" 保存连接,之后你就可以双击该连接来管理数据库了。

访问方式四:通过编程语言连接

你的应用程序(如 Python, Java, PHP, Node.js)也需要连接到 MySQL 数据库。

通用步骤:

  1. 安装数据库驱动/库

    • Python: pip install PyMySQLpip install mysql-connector-python
    • Java: 添加 MySQL Connector/J 的 .jar 文件到你的项目。
    • PHP: 通常已内置 mysqliPDO_MySQL 扩展。
    • Node.js: npm install mysql2npm install mysql
  2. 编写连接代码

Python (PyMySQL) 示例:

import pymysql
# 连接配置
connection = pymysql.connect(
    host='192.168.1.50',  # 或 'your_domain.com'
    user='remote_user',
    password='a_strong_password',
    database='my_app_db',
    cursorclass=pymysql.cursors.DictCursor  # 以字典形式返回结果
)
try:
    with connection.cursor() as cursor:
        # 执行 SQL 查询
        sql = "SELECT `id`, `name` FROM `users` LIMIT 10"
        cursor.execute(sql)
        # 获取所有结果
        results = cursor.fetchall()
        for row in results:
            print(f"{row['id']}: {row['name']}")
finally:
    # 关闭连接
    connection.close()

常见问题与排查

问题 1: ERROR 2003 (HY000): Can't connect to MySQL server on '...' (111 "Connection refused")

  • 原因: 最常见的原因是防火墙阻止了 3306 端口,或者 MySQL 服务根本没有启动。
  • 排查:
    1. 在服务器上检查 sudo systemctl status mysql
    2. 检查防火墙规则 (sudo ufw statussudo firewall-cmd --list-all)。
    3. 确认 MySQL 是否在监听 3306 端口: sudo ss -tulnp | grep 3306

**问题 2: `ERROR

分享:
扫描分享到社交APP
上一篇
下一篇