凌峰创科服务平台

Linux服务器如何配置MySQL?

目录

  1. 第一步:安装 MySQL
  2. 第二步:启动并设置开机自启
  3. 第三步:安全配置向导 (极其重要)
  4. 第四步:登录 MySQL 并基础操作
  5. 第五步:创建用户和授权 (安全核心)
  6. 第六步:配置远程访问
  7. 第七步:配置 MySQL 性能
  8. 第八步:常用维护命令
  9. 总结与最佳实践

准备工作

在开始之前,请确保你:

Linux服务器如何配置MySQL?-图1
(图片来源网络,侵删)
  • 拥有一台已经安装好 Linux 操作系统的服务器(推荐 Ubuntu 20.04+ 或 CentOS 8+)。
  • 拥有服务器的 sudoroot 权限。
  • 知道服务器的 IP 地址。

第一步:安装 MySQL

根据你的 Linux 发行版选择对应的命令。

对于 Ubuntu / Debian 系统

  1. 更新软件包列表:

    sudo apt update
  2. 安装 MySQL 服务器:

    sudo apt install mysql-server

    安装过程中,系统可能会提示你设置 root 用户的密码,如果没提示,没关系,我们可以在安全配置向导中设置。

    Linux服务器如何配置MySQL?-图2
    (图片来源网络,侵删)

对于 CentOS / RHEL / Rocky Linux / AlmaLinux 系统

  1. 你需要添加 MySQL 官方的 Yum 仓库。

    # 下载并添加 MySQL 官方仓库
    sudo dnf localinstall https://dev.mysql.com/get/mysql80-community-release-el8-7.noarch.rpm -y

    你可以运行以下命令来验证仓库是否添加成功:

    sudo dnf repolist enabled | grep ".*"'.*".*-community-.*"
  2. 安装 MySQL 服务器:

    sudo dnf install mysql-community-server -y

第二步:启动并设置开机自启

安装完成后,MySQL 服务通常不会自动启动,你需要手动启动它,并设置为开机自启。

Linux服务器如何配置MySQL?-图3
(图片来源网络,侵删)

通用方法 (适用于 systemd 系统,如 Ubuntu 18.04+, CentOS 7+)

  1. 启动 MySQL 服务:

    sudo systemctl start mysql
  2. 设置开机自启:

    sudo systemctl enable mysql
  3. 检查 MySQL 服务状态:

    sudo systemctl status mysql

    如果看到 active (running),则表示服务已成功启动。


第三步:安全配置向导 (极其重要)

MySQL 提供了一个安全脚本,它会帮助我们:

  • 设置 root 用户的密码(如果之前没设置)。
  • 移除匿名用户。
  • 禁止 root 用户远程登录。
  • 移除测试数据库。
  • 重新加载权限表,使更改生效。

运行这个脚本是安全配置的第一步。

sudo mysql_secure_installation

按照屏幕提示进行操作:

  1. VALIDATE PASSWORD COMPONENT: 输入 Y 启用密码强度验证组件,它会要求你设置一个强密码(包含大小写字母、数字和特殊符号),你可以选择安全级别 0 (LOW), 1 (MEDIUM), 2 (STRONG),推荐选择 12
  2. Set root password?: 输入 Y 并为 root 用户设置一个强密码,你需要输入两次。
  3. Remove anonymous users?: 输入 Y 移除匿名用户,这是一个重要的安全措施。
  4. Disallow root login remotely?: 输入 Y,禁止 root 用户从任何远程机器登录,这是最佳安全实践,你将只能通过服务器本地 localhost 登录为 root
  5. Remove test database and access to it?: 输入 Y 删除默认的测试数据库,并删除对它的访问权限。
  6. Reload privilege tables now?: 输入 Y 重新加载权限表,让所有更改立即生效。

第四步:登录 MySQL 并基础操作

我们可以尝试登录 MySQL 了。

本地登录

在服务器上,直接使用 mysql 命令并输入你刚才设置的 root 密码即可。

mysql -u root -p

登录成功后,你会看到 mysql> 提示符,以下是一些基础命令:

  • 查看所有数据库
    SHOW DATABASES;
  • 创建一个新数据库 (myapp_db):
    CREATE DATABASE myapp_db;
  • 使用某个数据库
    USE myapp_db;
  • 查看当前数据库的所有表
    SHOW TABLES;
  • 创建一个新表 (users):
    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(50) NOT NULL,
        email VARCHAR(100) NOT NULL UNIQUE,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
  • 退出 MySQL
    EXIT;
    -- 或者
    QUIT;

第五步:创建用户和授权 (安全核心)

永远不要直接使用 root 用户进行应用程序连接! 我们应该为每个应用创建一个独立的、权限受限的用户。

假设我们要为 myapp_db 数据库创建一个名为 myapp_user 的用户,并设置密码 your_strong_password

  1. 登录 MySQL

    mysql -u root -p
  2. 创建用户并授权 (在 MySQL 提示符内执行):

    -- 创建用户,并允许其从任何主机 ('%') 连接
    CREATE USER 'myapp_user'@'%' IDENTIFIED BY 'your_strong_password';
    -- 为用户授予对 myapp_db 数据库的所有权限 (ALL PRIVILEGES)
    -- WITH GRANT OPTION 表示该用户可以将自己的权限授予其他用户
    GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'%';
    -- 刷新权限,使授权立即生效
    FLUSH PRIVILEGES;
  3. 验证权限

    -- 查看用户的权限
    SHOW GRANTS FOR 'myapp_user'@'%';
  4. 退出 MySQL

    EXIT;

你的应用程序就可以使用 myapp_useryour_strong_password 来连接数据库了。


第六步:配置远程访问

默认情况下,为了安全,MySQL 只监听 0.0.1 (localhost),如果你需要从其他服务器或本地电脑远程连接 MySQL,需要进行配置。

  1. 编辑 MySQL 配置文件

    • Ubuntu/Debian: /etc/mysql/mysql.conf.d/mysqld.cnf
    • CentOS/RHEL: /etc/my.cnf/etc/my.cnf.d/mysql-server.cnf

    使用 vimnano 编辑器打开文件:

    # Ubuntu/Debian
    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
    # CentOS/RHEL
    sudo vim /etc/my.cnf
  2. 注释掉或修改绑定地址 找到下面这行,在行首加上 将其注释掉,或者将其值改为 0.0.0(表示监听所有网络接口)。

    # bind-address          = 127.0.0.1

    修改为:

    bind-address = 0.0.0.0
  3. 保存并退出 (在 vim 中是 wq)。

  4. 重启 MySQL 服务使配置生效

    sudo systemctl restart mysql
  5. 配置防火墙 确保 Linux 服务器的防火墙允许 MySQL 的默认端口 3306

    • Ubuntu (使用 UFW):
      sudo ufw allow 3306/tcp
    • CentOS (使用 firewalld):
      sudo firewall-cmd --permanent --add-port=3306/tcp
      sudo firewall-cmd --reload

注意:直接开放 3306 端口到公网有安全风险。最佳实践是

  • 只允许特定 IP 地址访问,而不是 ,在创建用户时使用 CREATE USER 'myapp_user'@'192.168.1.100' IDENTIFIED BY '...';
  • 如果必须公网访问,务必为用户设置一个非常复杂的密码,并考虑使用 VPN 或 SSH 隧道。

第七步:配置 MySQL 性能

MySQL 的默认配置是为低内存环境设计的,如果你的服务器内存较大(2GB 以上),可以通过修改配置文件来提升性能。

  1. 备份原配置文件

    # Ubuntu/Debian
    sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak
    # CentOS/RHEL
    sudo cp /etc/my.cnf /etc/my.cnf.bak
  2. 编辑配置文件 我们可以在配置文件中添加或修改 [mysqld] 部分的参数,以下是一些常见的优化参数,请根据你的服务器内存大小进行调整

    [mysqld]
    # 设置 InnoDB 存储引擎的缓冲池大小,这是最重要的性能参数。
    # 通常设置为系统可用物理内存的 50%-80%。
    innodb_buffer_pool_size = 1G
    # 设置服务器默认的字符集,推荐 utf8mb4
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    # 设置最大连接数
    max_connections = 200
    # 启用慢查询日志,用于优化 SQL 语句
    slow_query_log = 1
    slow_query_log_file = /var/log/mysql/mysql-slow.log
    long_query_time = 2
  3. 重启 MySQL 服务

    sudo systemctl restart mysql

第八步:常用维护命令

  • 查看 MySQL 版本
    mysql --version
    # 或在 mysql> 提示符内
    SELECT VERSION();
  • 备份单个数据库 (使用 mysqldump):
    # 格式: mysqldump -u [用户名] -p [数据库名] > [备份文件名].sql
    mysqldump -u root -p myapp_db > myapp_db_backup.sql
  • 恢复数据库
    # 格式: mysql -u [用户名] -p [数据库名] < [备份文件名].sql
    mysql -u root -p myapp_db < myapp_db_backup.sql
  • 查看 MySQL 错误日志
    • Ubuntu/Debian: /var/log/mysql/error.log
    • CentOS/RHEL: /var/log/mysqld.log
      sudo tail -f /var/log/mysql/error.log

总结与最佳实践

  1. 安全第一:始终运行 mysql_secure_installation,为每个应用创建独立的数据库用户,并授予最小必要权限。
  2. 禁止远程 Root:永远不要允许 root 用户从远程登录。
  3. 强密码策略:为所有数据库用户设置复杂且唯一的密码。
  4. 定期备份:制定并执行自动备份策略,并定期测试备份文件的可用性。
  5. 性能监控:定期检查 MySQL 的运行状态(如慢查询、连接数等),并根据需要进行调优。
  6. 使用防火墙:利用 Linux 防火墙限制对 MySQL 端口的访问,只允许信任的 IP 地址。

这份指南涵盖了 MySQL 在 Linux 服务器上的基础到进阶配置,希望能帮助你顺利完成部署。

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