一、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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论