您好,登录后才能下订单哦!
# 如何安装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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。