前言
本文以 mysql 8.0 为例(适配麒麟 v10 x86 最稳定版本),全程覆盖「环境检查→下载安装→配置优化→服务管理→验证使用」全流程,兼顾新手友好性和生产级配置,步骤细化到每一条命令和参数说明。
一、前期准备
1.1 检查系统环境
首先确认系统版本和架构,确保是银河麒麟 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)" id="kylin" version_id="v10" arch=x86_64
1.2 关闭防火墙 / selinux(可选,生产环境按需配置)
麒麟 v10 默认启用防火墙和 selinux,临时关闭避免安装 / 连接问题:
# 关闭防火墙(临时,重启失效) systemctl stop firewalld systemctl disable firewalld # 关闭selinux(临时,重启失效) setenforce 0 # 永久关闭selinux(修改配置文件) sed -i 's/^selinux=.*/selinux=disabled/' /etc/selinux/config
1.3 卸载系统自带 mariadb(避免冲突)
麒麟 v10 可能预装 mariadb,需先卸载:
# 查看已安装的mariadb包 rpm -qa | grep mariadb # 卸载(替换为实际查到的包名) rpm -e --nodeps mariadb-libs-xxx.x86_64
1.4 安装依赖包
mysql 依赖libaio、numactl等库,提前安装:
yum install -y libaio-devel numactl-devel perl net-tools wget
二、下载 mysql 安装包
2.1 方式 1:官网下载(推荐)
访问 mysql 官网:https://dev.mysql.com/downloads/mysql/ 选择:
- 操作系统:
linux - generic - 架构:
x86_64 - 版本:
mysql 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
2.2 方式 2:国内镜像(速度更快)
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
三、安装 mysql
3.1 解压安装包
# 解压(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
3.2 创建用户和目录
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 # 严格权限
3.3 配置系统环境变量
让系统识别 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
3.4 初始化 mysql
初始化生成临时密码(务必记录!):
# 初始化(指定数据目录、用户、字符集) 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"
3.5 配置 mysql 服务(systemd 管理)
创建系统服务文件,方便启停 / 开机自启:
# 创建服务文件 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
四、核心配置优化(my.cnf)
创建 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 并修改密码
5.1 首次登录(使用临时密码)
# 登录mysql(输入初始化时的临时密码) mysql -uroot -p # 示例:输入密码后进入mysql命令行,提示符变为:root@localhost [(none)]>
5.2 修改 root 密码(必须!)
-- 修改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;
5.3 验证新密码登录
# 本地登录 mysql -uroot -pmynewpass123! # 远程登录(从其他机器) mysql -uroot -pmynewpass123! -h 麒麟服务器ip -p 3306
六、常见问题解决
6.1 启动失败:找不到 libtinfo.so.5
麒麟 v10 可能缺少该库,解决:
# 查找系统现有库 find / -name libtinfo.so* # 创建软链接 ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
6.2 远程连接失败
- 检查防火墙:
systemctl status firewalld(若开启,放行 3306 端口:firewall-cmd --permanent --add-port=3306/tcp && firewall-cmd --reload) - 检查 my.cnf:确认无
bind-address = 127.0.0.1(或改为0.0.0.0) - 检查用户权限:
select user, host from mysql.user;(确保 root@% 存在)
6.3 初始化时报错:权限不足
# 重新设置目录权限 chown -r mysql:mysql /data/mysql /usr/local/mysql /var/log/mysql chmod 700 /data/mysql
6.4 忘记 root 密码
# 停止mysql服务 systemctl stop mysqld # 跳过权限验证启动 mysqld_safe --skip-grant-tables --user=mysql & # 免密登录 mysql -uroot # 修改密码 use mysql; update user set authentication_string='' 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则正常
八、生产环境建议
- 禁用 root 远程登录:创建专用业务用户,仅授予必要权限:
create user 'app_user'@'%' identified by 'apppass123!'; grant select, insert, update, delete on test_db.* to 'app_user'@'%'; flush privileges;
- 定期备份:使用
mysqldump备份数据:mysqldump -uroot -p --all-databases > /backup/mysql_full_$(date +%y%m%d).sql
- 监控日志:定期检查慢查询日志和错误日志,优化 sql;
- 调整内核参数:修改
/etc/security/limits.conf提升文件句柄数:echo "mysql soft nofile 65535" >> /etc/security/limits.conf echo "mysql hard nofile 65535" >> /etc/security/limits.conf
- 开启二进制日志:用于数据恢复 / 主从复制(my.cnf 添加):
ini
log_bin = /data/mysql/mysql-bin binlog_format = row expire_logs_days = 7
至此,银河麒麟 v10 x86 平台的 mysql 8.0 已完成完整安装和配置,可直接用于开发 / 生产环境。
通过行业报告、学术研究或权威媒体获取最新统计数据或真实案例,增强内容的可信度。例如补充2023年相关领域市场规模、用户行为变化等。
对现有流程或方法进行分步拆解,插入工具推荐、操作注意事项或常见问题解决方案。例如技术类内容可补充代码片段:
def example_function(param):
# 添加具体实现逻辑
return processed_result加入历史发展脉络、相关政策法规或跨领域关联知识,帮助读者建立系统性认知。例如补充国际标准iso条款或行业技术演进时间轴。
总结
到此这篇关于银河麒麟v10 x86安装mysql 8.0超详细步骤记录的文章就介绍到这了,更多相关银河麒麟v10安装mysql内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论