Linux 安装 MySQL:初始化、授权与远程访问
linux 安装mysql
在 Linux 服务器上安装 MySQL,通常推荐使用官方软件源或容器镜像,这样可以获得更稳定的版本、安全更新和完整组件。MySQL 是常用的关系型数据库,广泛用于 Web 应用、后台系统、数据分析等场景。安装前需要先确认服务器系统类型,例如 Ubuntu、Debian、CentOS、RHEL、Rocky Linux、AlmaLinux 等,不同系统的服务名称和配置文件路径略有差异。
一、安装前准备
在安装 MySQL 之前,建议先完成以下准备:
- 拥有
root权限或sudo权限; - 确认服务器可以访问外网软件源;
- 确认数据库端口
3306没有被占用; - 区分 MySQL 与 MariaDB,二者命令相似但不是完全相同的数据库;
- 如果是生产环境,建议提前规划数据库账号、密码、数据目录和备份策略。
二、Ubuntu / Debian 系统安装 MySQL
如果是 Ubuntu 或 Debian 系统,可以先更新软件源,然后安装 MySQL 服务。
sudo apt update
sudo apt install -y mysql-server
安装完成后,启动 MySQL 并设置开机自启:
sudo systemctl enable mysql
sudo systemctl start mysql
sudo systemctl status mysql
查看 MySQL 版本:
mysql --version
如果系统默认源安装的不是官方 MySQL Community Server,而是 MariaDB,建议前往 MySQL 官方网站下载对应的 APT 软件源配置包,再执行安装。
三、CentOS / RHEL / Rocky / Alma 系统安装 MySQL
在 CentOS、RHEL、Rocky Linux、AlmaLinux 等系统中,推荐使用 MySQL 官方 YUM/DNF 仓库。以下以 MySQL 8.4 LTS 示例,实际安装时可根据官方页面选择对应版本。
sudo dnf install -y wget
wget https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm
sudo dnf install -y ./mysql84-community-release-el9-1.noarch.rpm
sudo dnf install -y mysql-community-server
启动 MySQL 服务:
sudo systemctl enable mysqld
sudo systemctl start mysqld
sudo systemctl status mysqld
查看临时 root 密码:
sudo grep 'temporary password' /var/log/mysqld.log
然后使用临时密码登录:
mysql -u root -p
四、执行安全初始化
MySQL 安装后,建议执行安全初始化命令:
sudo mysql_secure_installation
根据提示完成以下操作:
- 设置 root 密码;
- 删除匿名用户;
- 禁止 root 远程登录;
- 删除测试数据库;
- 重新加载权限表。
生产环境中,不建议使用简单密码,也不建议直接使用 root 账号连接应用程序。
五、创建数据库和普通用户
登录 MySQL:
sudo mysql
创建数据库和用户:
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
CREATE USER 'app'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON appdb.* TO 'app'@'localhost';
FLUSH PRIVILEGES;
EXIT;
测试连接:
mysql -u app -p -h 127.0.0.1 -P 3306
如果需要允许远程连接,可以创建远程用户:
CREATE USER 'app'@'%' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON appdb.* TO 'app'@'%';
FLUSH PRIVILEGES;
注意:'app'@'%' 表示允许该用户从任意主机连接,生产环境应尽量限制为指定 IP。
六、配置 MySQL 参数
MySQL 的配置文件路径因系统而异:
- Ubuntu / Debian:
/etc/mysql/mysql.conf.d/mysqld.cnf - CentOS / RHEL / Rocky / Alma:
/etc/my.cnf
常见配置如下:
[mysqld]
bind-address=0.0.0.0
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
max_connections=500
innodb_buffer_pool_size=512M
修改配置后重启服务:
Ubuntu / Debian:
sudo systemctl restart mysql
CentOS / RHEL / Rocky / Alma:
sudo systemctl restart mysqld
如果服务器只允许本地访问,可以将 bind-address 设置为:
bind-address=127.0.0.1
七、开放防火墙端口
如果需要远程连接 MySQL,需要开放 3306 端口。
Ubuntu 使用 UFW:
sudo ufw allow 3306/tcp
CentOS / RHEL 使用 firewalld:
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
如果使用云服务器,还需要在云平台安全组中放行 3306 端口。
八、常见问题排查
1. 服务启动失败
查看服务状态:
sudo systemctl status mysql
或:
sudo systemctl status mysqld
查看日志:
sudo journalctl -u mysql -xe
或:
sudo tail -n 100 /var/log/mysqld.log
2. 远程连接失败
重点检查:
- MySQL 服务是否启动;
bind-address是否允许远程连接;- 防火墙是否开放
3306; - 云安全组是否放行;
- 用户是否允许从远程主机登录;
- 密码是否正确。
3. 权限不足
如果普通账号无法访问数据库,可以重新授权:
GRANT ALL PRIVILEGES ON appdb.* TO 'app'@'%';
FLUSH PRIVILEGES;
九、使用 Docker 安装 MySQL
如果希望快速部署,也可以使用 Docker 安装 MySQL:
docker run --name mysql \
-e MYSQL_ROOT_PASSWORD=强密码 \
-p 3306:3306 \
-v mysql-data:/var/lib/mysql \
-d mysql:8.4
进入容器登录:
docker exec -it mysql mysql -uroot -p
使用 Docker 安装时,建议将数据目录挂载到宿主机,避免容器删除后数据丢失。
十、数据库备份与恢复
备份单个数据库:
mysqldump -u root -p --single-transaction --routines --triggers appdb > appdb.sql
恢复数据库:
mysql -u root -p appdb < appdb.sql
生产环境建议定期备份,并将备份文件保存到远程服务器或对象存储中,防止服务器故障导致数据丢失。
总结概括全文
Linux 安装 MySQL 的核心步骤包括:准备系统环境、安装 MySQL 服务、启动服务、执行安全初始化、创建数据库和用户、配置参数、开放端口、测试连接以及定期备份。不同 Linux 发行版的命令和服务名称略有区别,Ubuntu / Debian 通常使用 mysql 服务,CentOS / RHEL 系列通常使用 mysqld 服务。生产环境中,应优先使用官方软件源,设置强密码,限制远程访问,并做好数据备份。只要按照规范流程操作,就可以在 Linux 服务器上稳定部署 MySQL 数据库。