在Linux系统中使用tar包安装MySQL是一种灵活的方式,尤其适合需要自定义安装路径或特定版本的场景,以下是详细的安装步骤及注意事项,涵盖环境准备、依赖安装、配置优化及安全设置等内容。
安装前准备工作
检查系统环境
确保Linux系统满足MySQL的基本要求:内核版本建议3.10+(CentOS 7+或Ubuntu 18.04+),磁盘剩余空间至少1GB(数据目录建议单独分区),内存至少2GB(推荐4GB+),可通过以下命令检查:
uname -r # 查看内核版本 df -h # 查看磁盘空间 free -h # 查看内存
卸载旧版本MySQL
若系统已安装MySQL,需先彻底卸载,避免冲突:
# CentOS系统 rpm -qa | grep mysql | xargs rpm -e --nodeps # Ubuntu系统 dpkg -l | grep mysql | xargs apt-get -y purge # 删除残留目录 rm -rf /var/lib/mysql /usr/lib/mysql /etc/my.cnf
安装依赖库
MySQL运行需要依赖一些基础库,根据系统类型安装:
- CentOS系统:
yum install -y libaio-devel numactl-devel openssl-devel cmake gcc-c++ make
- Ubuntu系统:
apt update && apt install -y libaio1 numactl libncurses5 libssl-dev cmake g++ make
下载并解压MySQL tar包
下载MySQL二进制tar包
从MySQL官网(https://dev.mysql.com/downloads/mysql/)下载“Linux – Generic”版本的tar.gz包(如mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
),使用wget
命令下载:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
解压并移动到安装目录
# 解压xz格式(若为tar.gz则直接用tar -zxf) xz -d mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar # 移动到/usr/local/并创建软链接 mv mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql ln -s /usr/local/mysql /usr/local/mysql-8.0.33
创建MySQL用户和组
为安全考虑,避免使用root用户运行MySQL:
groupadd mysql useradd -r -g mysql -s /bin/false mysql
初始化MySQL数据目录
创建数据目录并设置权限
mkdir -p /data/mysql # 数据存储目录 chown -R mysql:mysql /data/mysql /usr/local/mysql chmod -R 750 /usr/local/mysql
初始化MySQL数据库
进入MySQL安装目录的bin
目录,执行初始化命令:
cd /usr/local/mysql/bin ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
初始化完成后,终端会输出临时root密码(类似root@localhost: <临时密码>
),需记录此密码,后续登录时使用。
配置MySQL配置文件
创建主配置文件my.cnf
vim /etc/my.cnf ```根据实际需求调整参数): ```ini [mysqld] # 基础路径配置 basedir = /usr/local/mysql datadir = /data/mysql socket = /tmp/mysql.sock port = 3306 character-set-server = utf8mb4 collation-server = utf8mb4_general_ci # 日志配置 log-error = /data/mysql/mysql-error.log slow_query_log = 1 slow_query_log_file = /data/mysql/mysql-slow.log long_query_time = 2 # InnoDB引擎配置 innodb_buffer_pool_size = 1G innodb_log_file_size = 256M innodb_flush_log_at_trx_commit = 2 # 其他安全配置 sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION max_connections = 200
配置文件参数说明
参数 | 说明 |
---|---|
basedir |
MySQL安装根目录 |
datadir |
数据文件存储目录 |
socket |
MySQL通信socket文件路径 |
port |
监听端口,默认3306 |
innodb_buffer_pool_size |
InnoDB缓冲池大小,建议为物理内存的50%-70% |
sql_mode |
SQL模式,严格模式避免非法数据 |
配置系统服务并启动
创建systemd服务文件
vim /usr/lib/systemd/system/mysqld.service
[Unit] Description=MySQL Server After=network.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE=5000 Restart=on-failure [Install] WantedBy=multi-user.target
启动MySQL服务
systemctl daemon-reload systemctl start mysqld systemctl enable mysqld # 设置开机自启
检查MySQL状态
systemctl status mysqld # 或检查进程 ps aux | grep mysqld # 或查看端口监听 netstat -tuln | grep 3306
安全配置与初始设置
登录MySQL并修改root密码
使用临时密码登录:
mysql -u root -p
输入临时密码后,执行以下命令修改密码(密码需包含大小写字母、数字和特殊字符):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword@123'; FLUSH PRIVILEGES;
执行安全脚本
MySQL提供了mysql_secure_installation
脚本,用于优化安全设置:
/usr/local/mysql/bin/mysql_secure_installation
根据提示完成:
- 设置root密码(若已修改可跳过)
- 移除匿名用户
- 禁止root远程登录(推荐,仅允许本地登录)
- 删除测试数据库
- 重新加载权限表
环境变量配置
为方便全局使用MySQL命令,将bin
目录加入PATH
:
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile source /etc/profile
验证配置:
echo $PATH mysql --version
常见问题排查
- 启动失败:检查
/data/mysql/mysql-error.log
日志,常见原因包括权限错误、配置文件参数错误、依赖库缺失。 - 无法连接:确认防火墙是否放行3306端口(
firewall-cmd --add-port=3306/tcp --permanent
),或检查bind-address
配置(默认为127.0.0.1,远程访问需改为0.0.0.0)。
相关问答FAQs
问题1:安装后无法启动MySQL,提示“Failed to start mysqld.service: Unit not found”怎么办?
解答:该错误通常因systemd服务文件路径错误或未正确加载导致,检查服务文件是否存放在/usr/lib/systemd/system/
目录下,执行systemctl daemon-reload
重新加载服务配置后再次启动,若仍失败,检查mysqld.service
中的ExecStart
路径是否正确指向MySQL的mysqld
可执行文件。
问题2:如何设置MySQL开机自启?
解答:在配置systemd服务时,已通过WantedBy=multi-user.target
设置开机自启,若未配置,可通过以下命令手动设置:
systemctl enable mysqld # 启用开机自启 systemctl disable mysqld # 禁用开机自启
设置后,可通过systemctl is-enabled mysqld
查看自启状态,确认输出为enabled
即表示配置成功。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/23550.html