本文以 MySQL 8.0 为例(适配麒麟 V10 x86 最稳定版本),全程覆盖「环境检查→下载安装→配置优化→服务管理→验证使用」全流程,兼顾新手友好性和生产级配置,步骤细化到每一条命令和参数说明。


本文详细介绍在银河麒麟 V10 x86_64 操作系统上部署 MySQL 8.0 的完整流程。内容包括系统环境检查、依赖包安装、源码下载与解压、mysql 用户创建及目录权限配置。重点讲解了 systemd 服务文件编写、my.cnf 配置文件优化(字符集、日志、性能参数)、初始化临时密码获取及 root 密码修改。此外涵盖远程连接配置、常见报错解决(如 libtinfo 缺失)及生产环境下的监控、备份与安全加固建议,确保数据库稳定运行。
本文以 MySQL 8.0 为例(适配麒麟 V10 x86 最稳定版本),全程覆盖「环境检查→下载安装→配置优化→服务管理→验证使用」全流程,兼顾新手友好性和生产级配置,步骤细化到每一条命令和参数说明。


首先确认系统版本和架构,确保是银河麒麟 V10 x86_64:
# 查看系统版本
cat /etc/os-release
# 查看系统架构(必须是 x86_64)
uname -m
输出示例(确认 arch 为 x86_64,NAME 包含 "Kylin Linux Advanced Server 10"):
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Tercel)"
VERSION_ID="V10"
arch=x86_64
麒麟 V10 默认启用防火墙和 SELinux,临时关闭避免安装 / 连接问题:
# 关闭防火墙(临时,重启失效)
systemctl stop firewalld
systemctl disable firewalld
# 关闭 SELinux(临时,重启失效)
setenforce 0
# 永久关闭 SELinux(修改配置文件)
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
麒麟 V10 可能预装 MariaDB,需先卸载:
# 查看已安装的 MariaDB 包
rpm -qa | grep mariadb
# 卸载(替换为实际查到的包名)
rpm -e --nodeps mariadb-libs-xxx.x86_64
MySQL 依赖 libaio、numactl 等库,提前安装:
yum install -y libaio-devel numactl-devel perl net-tools wget
访问 MySQL 官网:https://dev.mysql.com/downloads/mysql/ 选择:
Linux - Genericx86_64MySQL Community Server 8.0.x(推荐 8.0.36 及以上,适配麒麟 V10)Compressed TAR Archive(tar.xz 格式)或直接用 wget 命令下载(替换为最新版本链接):
# 切换到下载目录
cd /usr/local/src
# 下载 MySQL 8.0.36(x86_64)
wget https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz
cd /usr/local/src
# 阿里云镜像(示例)
wget https://mirrors.aliyun.com/mysql/Downloads/MySQL-8.0/mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz
# 解压(xz 格式需先解压为 tar,再解包)
xz -d mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz
tar -xvf mysql-8.0.36-linux-glibc2.28-x86_64.tar
# 移动并重命名(规范路径)
mv mysql-8.0.36-linux-glibc2.28-x86_64 /usr/local/mysql
MySQL 需独立用户运行,避免 root 权限风险:
# 创建 mysql 用户(无登录权限)
useradd -s /sbin/nologin -M mysql
# 创建数据/日志/临时目录
mkdir -p /data/mysql
mkdir -p /var/log/mysql
mkdir -p /tmp/mysql
# 设置目录权限(仅 mysql 用户可访问)
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /var/log/mysql
chown -R mysql:mysql /tmp/mysql
chmod 700 /data/mysql # 严格权限
让系统识别 mysql 命令:
# 编辑环境变量文件
vim /etc/profile
# 在文件末尾添加以下内容
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
# 生效配置
source /etc/profile
# 验证(输出/usr/local/mysql/bin 则正确)
echo $PATH
初始化生成临时密码(务必记录!):
# 初始化(指定数据目录、用户、字符集)
mysqld --initialize \
--user=mysql \
--datadir=/data/mysql \
--basedir=/usr/local/mysql \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci
# 关键:初始化完成后,控制台会输出临时密码,格式如下:
# [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xxxxxxxx
# 示例:临时密码可能是:8s9k7&8jL0pQ(复制保存!)
若未看到临时密码,查看日志:
cat /var/log/mysql/error.log | grep "temporary password"
创建系统服务文件,方便启停 / 开机自启:
# 创建服务文件
vim /usr/lib/systemd/system/mysqld.service
# 粘贴以下内容(完整配置)
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=notify
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=/usr/local/mysql/bin/mysqld \
--datadir=/data/mysql \
--basedir=/usr/local/mysql \
--user=mysql \
--log-error=/var/log/mysql/error.log \
--pid-file=/tmp/mysql/mysqld.pid \
--socket=/tmp/mysql/mysql.sock \
--tmpdir=/tmp/mysql \
--port=3306
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
Environment=MYSQLD_PARENT_PID=1
# 重新加载 systemd 配置
systemctl daemon-reload
# 设置开机自启
systemctl enable mysqld
# 启动 MySQL 服务
systemctl start mysqld
# 查看服务状态(显示 active (running) 则启动成功)
systemctl status mysqld
创建 MySQL 主配置文件,适配麒麟 V10 性能和稳定性:
# 创建配置文件(麒麟 V10 默认无 my.cnf,手动创建)
vim /etc/my.cnf
# 粘贴以下配置(生产级优化,按需调整)
[mysqld]
# 基础配置
basedir = /usr/local/mysql
datadir = /data/mysql
socket = /tmp/mysql/mysql.sock
pid-file = /tmp/mysql/mysqld.pid
user = mysql
port = 3306
server-id = 1 # 单机部署设为 1,主从需改
skip-name-resolve # 禁用 DNS 解析,提升连接速度
skip-external-locking # 禁用外部锁
# 字符集(适配中文)
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'
# 日志配置
log-error = /var/log/mysql/error.log
slow_query_log = 1 # 开启慢查询日志
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2 # 慢查询阈值(2 秒)
log_queries_not_using_indexes = 1 # 记录未使用索引的查询
# 性能优化(根据服务器配置调整)
max_connections = 1000 # 最大连接数
max_connect_errors = 1000000 # 最大连接错误数
innodb_buffer_pool_size = 2G # 内存的 50%-70%(示例:8G 内存设 4G)
innodb_log_file_size = 512M # 日志文件大小
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1 # 事务安全(生产建议 1)
tmp_table_size = 64M
max_heap_table_size = 64M
query_cache_type = 0 # 8.0 已废弃,关闭
query_cache_size = 0
[client]
socket = /tmp/mysql/mysql.sock
default-character-set = utf8mb4
[mysql]
prompt="\\u@\\h [\\d]>" # 美化命令行提示符
default-character-set = utf8mb4
配置完成后重启 MySQL:
systemctl restart mysqld
# 登录 MySQL(输入初始化时的临时密码)
mysql -uroot -p
# 示例:输入密码后进入 MySQL 命令行,提示符变为:root@localhost [(none)]>
-- 修改 root 本地登录密码(替换为你的新密码,建议包含大小写 + 数字 + 特殊字符)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass123!';
-- 允许 root 远程登录(生产环境建议创建专用用户,而非开放 root)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass123!' PASSWORD EXPIRE NEVER;
CREATE USER 'root'@'%' IDENTIFIED BY 'MyNewPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出 MySQL
EXIT;
# 本地登录
mysql -uroot -pMyNewPass123!
# 远程登录(从其他机器)
mysql -uroot -pMyNewPass123! -h 麒麟服务器 IP -P 3306
麒麟 V10 可能缺少该库,解决:
# 查找系统现有库
find / -name libtinfo.so*
# 创建软链接
ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
systemctl status firewalld(若开启,放行 3306 端口:firewall-cmd --permanent --add-port=3306/tcp && firewall-cmd --reload)bind-address = 127.0.0.1(或改为 0.0.0.0)SELECT user, host FROM mysql.user;(确保 root@% 存在)# 重新设置目录权限
chown -R mysql:mysql /data/mysql /usr/local/mysql /var/log/mysql
chmod 700 /data/mysql
# 停止 MySQL 服务
systemctl stop mysqld
# 跳过权限验证启动
mysqld_safe --skip-grant-tables --user=mysql &
# 免密登录
mysql -uroot
# 修改密码
USE mysql;
UPDATE user SET password=PASSWORD('新密码') WHERE user='root';
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
EXIT;
# 重启 MySQL
systemctl restart mysqld
# 1. 查看 MySQL 版本
mysql -V
# 输出:mysql Ver 8.0.36 for Linux on x86_64 (MySQL Community Server - GPL)
# 2. 查看服务状态
systemctl status mysqld
# 3. 查看监听端口(3306 端口 LISTEN 则正确)
netstat -tulnp | grep 3306
# 4. 登录并创建测试库
mysql -uroot -p
CREATE DATABASE test_db;
SHOW DATABASES;
# 能看到 test_db 则正常
监控日志:定期检查慢查询日志和错误日志,优化 SQL;
开启二进制日志:用于数据恢复 / 主从复制(my.cnf 添加):
log_bin = /data/mysql/mysql-bin
binlog_format = row
expire_logs_days = 7
调整内核参数:修改 /etc/security/limits.conf 提升文件句柄数:
echo "mysql soft nofile 65535" >> /etc/security/limits.conf
echo "mysql hard nofile 65535" >> /etc/security/limits.conf
定期备份:使用 mysqldump 备份数据:
mysqldump -uroot -p --all-databases > /backup/mysql_full_$(date +%Y%m%d).sql
禁用 root 远程登录:创建专用业务用户,仅授予必要权限:
CREATE USER 'app_user'@'%' IDENTIFIED BY 'AppPass123!';
GRANT SELECT, INSERT, UPDATE, DELETE ON test_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
至此,银河麒麟 V10 x86 平台的 MySQL 8.0 已完成完整安装和配置,可直接用于开发 / 生产环境。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online
解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL 转 CSV/JSON/XML在线工具,online
CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online