目录
- 第一步:安装 MySQL
- 第二步:启动并设置开机自启
- 第三步:安全配置向导 (极其重要)
- 第四步:登录 MySQL 并基础操作
- 第五步:创建用户和授权 (安全核心)
- 第六步:配置远程访问
- 第七步:配置 MySQL 性能
- 第八步:常用维护命令
- 总结与最佳实践
准备工作
在开始之前,请确保你:

- 拥有一台已经安装好 Linux 操作系统的服务器(推荐 Ubuntu 20.04+ 或 CentOS 8+)。
- 拥有服务器的
sudo或root权限。 - 知道服务器的 IP 地址。
第一步:安装 MySQL
根据你的 Linux 发行版选择对应的命令。
对于 Ubuntu / Debian 系统
-
更新软件包列表:
sudo apt update
-
安装 MySQL 服务器:
sudo apt install mysql-server
安装过程中,系统可能会提示你设置
root用户的密码,如果没提示,没关系,我们可以在安全配置向导中设置。
(图片来源网络,侵删)
对于 CentOS / RHEL / Rocky Linux / AlmaLinux 系统
-
你需要添加 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-.*"
-
安装 MySQL 服务器:
sudo dnf install mysql-community-server -y
第二步:启动并设置开机自启
安装完成后,MySQL 服务通常不会自动启动,你需要手动启动它,并设置为开机自启。

通用方法 (适用于 systemd 系统,如 Ubuntu 18.04+, CentOS 7+)
-
启动 MySQL 服务:
sudo systemctl start mysql
-
设置开机自启:
sudo systemctl enable mysql
-
检查 MySQL 服务状态:
sudo systemctl status mysql
如果看到
active (running),则表示服务已成功启动。
第三步:安全配置向导 (极其重要)
MySQL 提供了一个安全脚本,它会帮助我们:
- 设置
root用户的密码(如果之前没设置)。 - 移除匿名用户。
- 禁止
root用户远程登录。 - 移除测试数据库。
- 重新加载权限表,使更改生效。
运行这个脚本是安全配置的第一步。
sudo mysql_secure_installation
按照屏幕提示进行操作:
VALIDATE PASSWORD COMPONENT: 输入Y启用密码强度验证组件,它会要求你设置一个强密码(包含大小写字母、数字和特殊符号),你可以选择安全级别0(LOW),1(MEDIUM),2(STRONG),推荐选择1或2。Set root password?: 输入Y并为root用户设置一个强密码,你需要输入两次。Remove anonymous users?: 输入Y移除匿名用户,这是一个重要的安全措施。Disallow root login remotely?: 输入Y,禁止root用户从任何远程机器登录,这是最佳安全实践,你将只能通过服务器本地localhost登录为root。Remove test database and access to it?: 输入Y删除默认的测试数据库,并删除对它的访问权限。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。
-
登录 MySQL:
mysql -u root -p
-
创建用户并授权 (在 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; -
验证权限:
-- 查看用户的权限 SHOW GRANTS FOR 'myapp_user'@'%';
-
退出 MySQL:
EXIT;
你的应用程序就可以使用 myapp_user 和 your_strong_password 来连接数据库了。
第六步:配置远程访问
默认情况下,为了安全,MySQL 只监听 0.0.1 (localhost),如果你需要从其他服务器或本地电脑远程连接 MySQL,需要进行配置。
-
编辑 MySQL 配置文件
- Ubuntu/Debian:
/etc/mysql/mysql.conf.d/mysqld.cnf - CentOS/RHEL:
/etc/my.cnf或/etc/my.cnf.d/mysql-server.cnf
使用
vim或nano编辑器打开文件:# Ubuntu/Debian sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # CentOS/RHEL sudo vim /etc/my.cnf
- Ubuntu/Debian:
-
注释掉或修改绑定地址 找到下面这行,在行首加上 将其注释掉,或者将其值改为
0.0.0(表示监听所有网络接口)。# bind-address = 127.0.0.1修改为:
bind-address = 0.0.0.0 -
保存并退出 (在
vim中是wq)。 -
重启 MySQL 服务使配置生效
sudo systemctl restart mysql
-
配置防火墙 确保 Linux 服务器的防火墙允许 MySQL 的默认端口
3306。- Ubuntu (使用 UFW):
sudo ufw allow 3306/tcp
- CentOS (使用 firewalld):
sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload
- Ubuntu (使用 UFW):
注意:直接开放 3306 端口到公网有安全风险。最佳实践是:
- 只允许特定 IP 地址访问,而不是 ,在创建用户时使用
CREATE USER 'myapp_user'@'192.168.1.100' IDENTIFIED BY '...';。 - 如果必须公网访问,务必为用户设置一个非常复杂的密码,并考虑使用 VPN 或 SSH 隧道。
第七步:配置 MySQL 性能
MySQL 的默认配置是为低内存环境设计的,如果你的服务器内存较大(2GB 以上),可以通过修改配置文件来提升性能。
-
备份原配置文件
# 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
-
编辑配置文件 我们可以在配置文件中添加或修改
[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
-
重启 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.logsudo tail -f /var/log/mysql/error.log
- Ubuntu/Debian:
总结与最佳实践
- 安全第一:始终运行
mysql_secure_installation,为每个应用创建独立的数据库用户,并授予最小必要权限。 - 禁止远程 Root:永远不要允许
root用户从远程登录。 - 强密码策略:为所有数据库用户设置复杂且唯一的密码。
- 定期备份:制定并执行自动备份策略,并定期测试备份文件的可用性。
- 性能监控:定期检查 MySQL 的运行状态(如慢查询、连接数等),并根据需要进行调优。
- 使用防火墙:利用 Linux 防火墙限制对 MySQL 端口的访问,只允许信任的 IP 地址。
这份指南涵盖了 MySQL 在 Linux 服务器上的基础到进阶配置,希望能帮助你顺利完成部署。
