# 如何安装MySQL二进制包 ## 前言 MySQL作为全球最流行的开源关系型数据库管理系统,被广泛应用于各种规模的业务场景。与源码编译安装相比,二进制包安装具有明显的优势:无需复杂的编译环境配置、安装过程快速、降低了依赖问题的风险。本文将详细介绍在Linux系统下通过官方二进制包安装MySQL的完整流程,涵盖从准备工作到安全加固的全过程。 ## 一、安装前的准备工作 ### 1.1 系统环境检查 在开始安装前,需要确认系统是否符合MySQL的运行要求: ```bash # 检查操作系统版本 cat /etc/os-release # 检查内存和存储空间 free -h df -h # 检查CPU架构 uname -m
建议的最低配置: - 内存:2GB以上(生产环境建议8GB+) - 磁盘空间:至少5GB可用空间 - 操作系统:主流Linux发行版(CentOS/RHEL 7+, Ubuntu 18.04+等)
MySQL二进制包需要一些基础系统库的支持:
# CentOS/RHEL系统 sudo yum install -y libaio numactl-libs ncurses-compat-libs # Ubuntu/Debian系统 sudo apt-get install -y libaio1 libnuma1 libncurses5
为MySQL服务创建专用用户:
sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql
访问MySQL官方下载页面(https://dev.mysql.com/downloads/mysql/)选择适合的版本:
# 示例:下载MySQL 8.0.33通用Linux版本 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.17-x86_64.tar.xz # 验证文件完整性(可选) md5sum mysql-8.0.33-linux-glibc2.17-x86_64.tar.xz
选择适当的安装目录(通常为/usr/local):
sudo tar xvf mysql-8.0.33-linux-glibc2.17-x86_64.tar.xz -C /usr/local # 创建符号链接方便版本管理 cd /usr/local sudo ln -s mysql-8.0.33-linux-glibc2.17-x86_64 mysql
cd mysql sudo chown -R mysql:mysql . sudo chmod -R 750 .
MySQL 8.0推荐使用--initialize-insecure
或--initialize
:
sudo bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
注意: - --initialize-insecure
会创建空密码的root账户 - --initialize
会生成随机密码(查看错误日志获取)
sudo bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
sudo tee /etc/my.cnf <<EOF [mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/tmp/mysql.sock # 网络配置 port=3306 bind-address=0.0.0.0 # 字符集设置 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci # 其他优化参数 max_connections=200 innodb_buffer_pool_size=256M EOF
echo 'export PATH=/usr/local/mysql/bin:$PATH' | sudo tee /etc/profile.d/mysql.sh source /etc/profile.d/mysql.sh
sudo tee /etc/systemd/system/mysqld.service <<EOF [Unit] Description=MySQL Server After=network.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE=65535 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target EOF
sudo systemctl daemon-reload sudo systemctl start mysqld sudo systemctl enable mysqld # 检查服务状态 systemctl status mysqld
# 如果使用--initialize-insecure初始化 mysqladmin -u root password 'new_password' # 如果使用--initialize初始化 # 从错误日志中获取临时密码 grep 'temporary password' /usr/local/mysql/data/error.log mysql -uroot -p ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
mysql_secure_installation
该脚本会引导完成以下安全设置: - 更改root密码 - 移除匿名用户 - 禁止root远程登录 - 移除测试数据库 - 重新加载权限表
CREATE USER 'admin'@'%' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
mysql -u root -p -e "SELECT VERSION();"
SHOW VARIABLES LIKE 'innodb_buffer_pool_size'; SHOW VARIABLES LIKE 'character_set_server'; SHOW ENGINES;
# 使用sysbench进行简单测试 sysbench oltp_read_write --db-driver=mysql --mysql-user=root --mysql-password=your_password prepare sysbench oltp_read_write --db-driver=mysql --mysql-user=root --mysql-password=your_password run
检查错误日志:
tail -n 100 /usr/local/mysql/data/error.log
常见问题:
Address already in use
Can't create/write to file
error while loading shared libraries
停止MySQL服务:
systemctl stop mysqld
使用–skip-grant-tables启动:
mysqld_safe --skip-grant-tables &
重置密码:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
如果出现中文乱码:
-- 检查当前字符集设置 SHOW VARIABLES LIKE 'character%'; -- 永久解决方案需修改my.cnf [client] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
# 根据服务器内存调整 innodb_buffer_pool_size = 总内存的50-70% key_buffer_size = 32M query_cache_size = 0 # MySQL 8.0已移除查询缓存
# 错误日志 log_error = /var/log/mysql/error.log # 慢查询日志 slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 2 # 二进制日志(主从复制需要) server-id = 1 log_bin = /var/log/mysql/mysql-bin binlog_format = ROW
max_connections = 500 wait_timeout = 300 interactive_timeout = 300
# 完整备份 mysqldump -u root -p --all-databases > full_backup.sql # 单库备份 mysqldump -u root -p database_name > db_backup.sql # 恢复数据 mysql -u root -p < full_backup.sql
-- 查看当前二进制日志状态 SHOW MASTER STATUS; -- 定期执行日志轮转 FLUSH BINARY LOGS;
mysql_upgrade -u root -p
停止服务:
systemctl stop mysqld
删除文件:
rm -rf /usr/local/mysql* rm -rf /etc/my.cnf rm -rf /etc/systemd/system/mysqld.service
删除用户:
userdel mysql groupdel mysql
通过二进制包安装MySQL是一种高效可靠的方式,特别适合生产环境部署。本文详细介绍了从准备到配置的完整流程,包括安全设置、性能优化等进阶内容。实际部署时,建议根据具体业务需求调整配置参数,并建立完善的监控和备份机制。
# 服务管理 systemctl start|stop|restart|status mysqld # 进程查看 ps -ef | grep mysql # 连接检查 netstat -tulnp | grep 3306 mysqladmin -u root -p ping
”`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。