Linux 系统安装部署 MySQL 服务及远程连接配置

以 Ubuntu 18.04 为例,从零开始在 Linux 服务器上安装 MySQL 5.7、配置远程访问、创建远程用户,并排查常见连接问题。

目录


演示环境

演示以 Ubuntu 18.04.3 LTS 为例,在服务器端安装 MySQL 5.7.42。 在一般的应用场景下,服务器可以是外部服务器也可以是本地虚拟机上的服务器

服务器端:Linux 系统的 MySQL 服务器 客户端:Windows 系统下的数据库软件或安装了数据库服务的本地虚拟机、Linux 系统

步骤 1:更新包列表

首先,更新包列表以确保获取的是最新的软件包,在命令行中输入:

sudo apt-get update

更新包列表

步骤 2:安装 MySQL 服务器

安装 MySQL 服务器包,图示已安装好:

sudo apt-get install mysql-server

安装 MySQL 服务器

步骤 3:启动 MySQL 服务

查看服务状态,确保 MySQL 服务已启动:

/etc/init.d/mysql start   # 启动
/etc/init.d/mysql stop    # 关闭
/etc/init.d/mysql status  # 查看状态

MySQL 服务正常运行:

MySQL 服务状态

命令行输入 mysql,进入后初始化本地 root 用户:

进入 MySQL

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';

your_password 替换为你自己的密码。

初始化 root 用户

步骤 4:运行安全安装脚本

根据个人情况选择,可跳过。

为了提高 MySQL 安装的安全性,运行 mysql_secure_installation 脚本。该脚本将引导你完成一些基本的安全配置,如设置 root 密码、删除匿名用户、删除测试数据库等:

sudo mysql_secure_installation

步骤 5:验证安装

登录 MySQL 确认安装是否成功:

sudo mysql -u root -p

验证安装

步骤 6:配置 MySQL 以远程访问

若从其他计算机连接到你的 MySQL 服务器,配置 MySQL 以接受远程连接。编辑 MySQL 配置文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

编辑配置文件

找到 bind-address 行,原为 127.0.0.1,只用于本地通信。将其修改为 0.0.0.0,用于监听所有 IP:

修改 bind-address

重新启动 MySQL 服务:

sudo systemctl restart mysql

在服务器端 MySQL 中创建允许远程访问的用户,给予权限:

CREATE USER 'your_username'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

your_usernameyour_password 替换为你的用户名和密码。

执行完成后可以在 SQL 界面输入如下语句,就能看到刚刚建立的远程用户:

SELECT user, host FROM mysql.user;

查看远程用户

步骤 7:验证远程连接

首先获取服务器端 IP 地址:

  • 本地虚拟机:在虚拟机上输入 ifconfig 获取 IP 地址

    ifconfig 获取 IP

  • 外部服务器:在命令行中输入 curl ifconfig.me 获取 IP 地址

    curl 获取公网 IP

在远程客户端输入如下命令,其中 your_server_ip 是 MySQL 服务器的 IP 地址,remote_user 是你创建的允许远程访问的用户名:

mysql -h your_server_ip -u remote_user -p

远程连接测试

或者在 DataGrip、Navicat 等数据库可视化管理软件中进行连接:

DataGrip 连接

连接失败排查

  1. 确保 MySQL 服务器处于开启状态

    MySQL 服务状态

  2. 使用 ping 测试服务器可达性 — 如果不可达,检查服务器是否开启或者查看虚拟机上的网卡配置是否正确

    ping 测试

  3. 检查 3306 端口是否被禁用或被防火墙阻止

    netstat -tulnp | grep mysql

    netstat 检查端口

    sudo ss -tuln

    ss 检查端口

    添加防火墙规则以允许端口 3306:

    sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
    sudo iptables-save
  4. 使用 telnet 测试连接 — 排除以上问题后,使用 telnet 连接 MySQL 服务器 3306 端口。对于云服务器若连接不上,则查看服务器实例,在安全组详情页面检查入站规则,确保允许端口 3306 的入站流量。如果没有规则,添加一条允许端口 3306 的 TCP 流量。

    telnet your-ip-address 3306

    telnet 测试