在linux系统中使用通用包安装Mysql的步骤

 更新时间:2025年10月23日 15:18:57   作者:位步  
本文详细介绍了在Linux系统上安装MySQL 8.0的完整流程,包括下载校验安装包、解压部署、创建用户与数据目录、初始化数据库、配置系统服务等步骤,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧

一、Linux 通用包安装 MySQL

1、下载并校验安装包(以 8.0.33 为例,建议校验 sha256)

https://downloads.mysql.com/archives/community/

cd /data
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz.
# 可选:校验 sha256(从官网下载页复制对应校验值)
# sha256sum mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz

2、解压并放置到统一目录(统一使用 /usr/local/mysql8)

tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local
ln -s /usr/local/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql8

3、创建 mysql 用户与数据目录

groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin -d /usr/local/mysql8 mysql

4、创建 data 数据存储目录

mkdir -p /usr/local/mysql8/data /usr/local/mysql8/log

5、授权mysql用户

chown -R mysql.mysql /data/mysql8/

6、初始化数据库

这里需要记住初始密码

/usr/local/mysql8/bin/mysqld --user=mysql --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data/ --initialize --lower-case-table-names=1

7、安装为系统服务(systemd,推荐)

cp /usr/local/mysql8/support-files/mysql.server /etc/systemd/system/mysqld.service
systemctl daemon-reload
systemctl enable --now mysqld

8、基本配置文件(/etc/my.cnf)

[mysqld]
# 目录
basedir=/usr/local/mysql8
datadir=/usr/local/mysql8/data
socket=/usr/local/mysql8/mysql.sock
log-error=/usr/local/mysql8/log/mysqld.log
pid-file=/usr/local/mysql8/log/mysqld.pid
# 端口
port=3306
# 字符集与排序规则
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
# InnoDB
default-storage-engine=INNODB
innodb_buffer_pool_size=1G
innodb_log_file_size=256M
innodb_flush_method=O_DIRECT
innodb_file_per_table=ON
innodb_flush_log_at_trx_commit=1
sync_binlog=1
# 连接与安全
max_connections=200
skip-name-resolve
default_authentication_plugin=mysql_native_password
# 严格模式与 SQL 模式
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,ONLY_FULL_GROUP_BY
[client]
socket=/usr/local/mysql8/mysql.sock
default-character-set=utf8mb4
[mysql]
prompt="\\u@\\h [\\d]> "
no-auto-rehash

9、启动与验证

systemctl restart mysqld
systemctl status mysqld
# 首次登录(使用初始化时记录的临时密码)
/usr/local/mysql8/bin/mysql -uroot -p

10、首次登录后的安全设置(在 mysql 客户端内执行)

-- 1) 修改 root 本地密码(满足策略)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourP@ssw0rd';
FLUSH PRIVILEGES;
-- 2) 安全基线(删除匿名、禁止远程 root、删测试库、验证密码)
DELETE FROM mysql.user WHERE User='';
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourP@ssw0rd';
-- 如需本机应用以 root 连接,可添加:
-- CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'YourP@ssw0rd';
-- GRANT ALL ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;
-- FLUSH PRIVILEGES;
-- 3) 创建应用用户(示例,按需调整权限与来源)
CREATE USER 'app'@'10.0.0.%' IDENTIFIED WITH mysql_native_password BY 'AppP@ssw0rd_456!';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON appdb.* TO 'app'@'10.0.0.%';
FLUSH PRIVILEGES;

11、开放远程访问(可选,谨慎)

# 仅在确有需要时创建远程用户,并限制来源网段
/usr/local/mysql8/bin/mysql -uroot -p -e "
CREATE USER 'app'@'10.0.0.%' IDENTIFIED WITH mysql_native_password BY 'AppStrongP@ssw0rd_456!';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON appdb.* TO 'app'@'10.0.0.%';
FLUSH PRIVILEGES;"
# 系统防火墙(CentOS/RHEL)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="3306" accept'
firewall-cmd --reload
# Ubuntu/Debian
# sudo ufw allow from 10.0.0.0/24 to any port 3306 proto tcp

12、常用维护命令

# 查看状态/重启
systemctl status mysqld
systemctl restart mysqld
# 登录
/usr/local/mysql8/bin/mysql -uroot -p
# 设置开机自启/关闭
systemctl enable mysqld
systemctl disable mysqld

二、关键配置与安全建议​

1、字符集与排序规则:应用普遍需要 ​utf8mb4/utf8mb4_unicode_ci;不建议在 Linux 上启用 ​lower_case_table_names=1​(InnoDB 不支持,易导致导入报错)。

2、远程访问:默认只监听 ​127.0.0.1​ 更安全;如需远程,创建最小权限的专用账号并限制来源网段,必要时通过 ​VPN/SSH 隧道​ 管理。

3、防火墙与端口:仅放行必要来源的 ​3306/tcp,避免对公网全量开放。

4、密码策略与过期:保持 ​VALIDATE_PASSWORD​(或等效强策略),定期轮换高权限账号密码。

5、日志与审计:生产环境建议开启 ​错误日志、按需开启 ​慢查询日志;如需更强的审计能力,可评估企业版审计插件或合规替代方案。

6、SSL/TLS:跨公网或跨机房连接务必启用 ​SSL/TLS,并限制不安全协议/加密套件。

7、备份与恢复:制定并演练 ​全量+增量​ 备份策略(如 mysqldump/xtrabackup),定期验证可恢复性

三、常见坑与排查要点​

1、路径与权限:确保 ​basedir、datadir、log-error、socket​ 等路径存在且属主为 ​mysql:mysql;错误日志是定位启动失败的第一入口。

2、服务未启动/未开机自启:优先用 ​systemctl status/start/enable;不要混用 SysV 脚本与 systemd。

3、无法远程连接:检查 ​bind-address、用户 ​Host​ 字段、防火墙与云安全组、是否创建了对应用户并具备相应权限。

4、密码复杂度不满足:调整策略或使用更强的密码;必要时在测试环境临时降低策略后及时恢复。

5、忘记 root 密码:在可控环境下可临时停止服务,使用 ​​–skip-grant-tables​ 启动后重置密码,再恢复正常启动方式

到此这篇关于在linux系统中使用通用包安装Mysql的步骤的文章就介绍到这了,更多相关linux通用包安装mysql内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql中 IFNULL函数的使用详解

    Mysql中 IFNULL函数的使用详解

    IFNULL()函数在MySQL中用来检查第一个表达式是否为NULL,非NULL则返回第一个值,否则返回第二个值,本文就来详细的介绍一下如何使用,感兴趣的可以了解一下
    2024-09-09
  • MySQL表的约束示例详解

    MySQL表的约束示例详解

    文章详细介绍了数据库约束的种类,包括非空约束、默认值、列描述、主键(单主键和复合主键)、自增长、唯一键和外键,这些约束确保了数据库中数据的完整性、合法性和可预期性,对mysql表的约束相关知识感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • mysql2/promise 中 execute 和 query 的使用最佳实践

    mysql2/promise 中 execute 和 query 的使

    mysql2/promise中,execute使用预处理语句,严格类型检查且防SQL注入,适合频繁执行,query直接拼接SQL,参数绑定更宽松,适用于简单查询,LIMIT/OFFSET在query中不会报错,execute需拼接数字常量,本文给大家介绍mysql2/promise中execute和query的使用,感兴趣的朋友一起看看吧
    2025-08-08
  • Window10下mysql 5.7.21 安装配置方法图文教程

    Window10下mysql 5.7.21 安装配置方法图文教程

    这篇文章主要为大家详细介绍了Window10下mysql 5.7.21 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • 详解Mysql命令大全(推荐)

    详解Mysql命令大全(推荐)

    本篇文章详细的介绍了Mysql命令,MySQL是一个关系型数据库管理系统,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
    2016-11-11
  • 详解MySQL主从不一致情形与解决方法

    详解MySQL主从不一致情形与解决方法

    这篇文章主要介绍了详解MySQL主从不一致情形与解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • jQuery 绑定事件的方式总结

    jQuery 绑定事件的方式总结

    这篇文章主要介绍了jQuery 绑定事件的方式总结的相关资料,这里整理了几种方法,需要的朋友可以参考下
    2016-11-11
  • 查看修改mysql编码方式让它支持中文(gbk或者utf8)

    查看修改mysql编码方式让它支持中文(gbk或者utf8)

    MySQL的默认编码是Latin1,不支持中文,要支持中文需要把数据库的默认编码修改为gbk或者utf8,真的是很麻烦啊,不过本文提供了详细的修改教程,感兴趣的你可不要走开啊,希望本文对你有所帮助
    2013-01-01
  • Linux环境下设置MySQL表名忽略大小写的方法小结

    Linux环境下设置MySQL表名忽略大小写的方法小结

    在MySQL中,表名的大小写敏感性取决于操作系统和MySQL的配置,在Unix/Linux系统上,表名通常是区分大小写的,由于之前MySQL未设置忽略表名大小写导致数据查询失败等问题,所以本文给大家介绍了Linux环境下设置MySQL表名忽略大小写的方法,需要的朋友可以参考下
    2024-06-06
  • MySQL索引失效问题及解决方案

    MySQL索引失效问题及解决方案

    这篇文章主要介绍了MySQL索引失效问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05

最新评论