centos7 安装 mysql5.7
安装环境
操作系统:Centos7.9
安装用户:root
数据库版本:5.7.44
安装前检查
历史安装检查
检查是否安装过,有则卸载
# 检查是否安装过mysql
rpm -qa | grep -i mysql
# 检查是否安装过mariadb
rpm -qa | grep -i mariadb
# 使用 yum 卸载
yum remove -y mariadb-libs-5.5.64-1.el7.x86_64
# 使用 rpm 卸载
rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
历史遗留配置检查
需清理数据目录及文件如下:
- 安装目录:可通过
whereis mysql
获得; - 数据目录:可选,如果数据目录和安装目录是分开的,就需要单独清理;
- 配置文件:默认是 /etc/my.cnf;
- 日志文件:一般是 /var/log 目录下与mysql相关的日志目录和文件,例如 mysqld.log,如果有另外指定的日志目录,也要清理掉;
- 服务启动脚本:主要有以下几个
- /etc/init.d/mysql
- /etc/systemd/system/mysql.service
- /usr/lib/systemd/system/mysql.service
- 其他临时文件:如 /tmp 目录下和mysql相关的临时文件。
mysql用户组检查(非离线安装可跳过)
如果是离线安装mysql,需要手动创建mysql组和用户,因为mysql服务默认由mysql用户运行。
id mysql # 检查是否存在mysql用户,不存在则创建
groupadd mysql # 创建mysql用户组
useradd -r -g mysql mysql -s /sbin/nologin # 创建mysql用户,指定属组为mysql,并禁止其登录
开始安装
在线安装
1 安装mysql安装源
下载安装包
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
安装MySQL源
yum -y localinstall mysql57-community-release-el7-11.noarch.rpm
2 安装mysql
yum -y install mysql-community-server --nogpgcheck
3 启动服务
启动 mysql 服务
systemctl start mysqld
设置开机启动(可选)
systemctl enable mysqld
systemctl daemon-reload
离线安装
1 下载离线安装包
先在官方网址下载离线安装包后(默认选择最新的版本,示例中最新版本为5.7.44),上传到要部署的服务器。
官方下载地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-el7-x86_64.tar.gz
2 上传安装包并解压
将安装包上传到要部署的服务器,然后进行解压,默认解压到 /usr/local 。
tar zxvf mysql-5.7.44-el7-x86_64.tar.gz -C /usr/local
3 配置安装目录
- 修改默认目录名称
cd /usr/local
mv mysql-5.7.44-el7-x86_64 mysql
- 创建配置目录(数据存储、日志、临时文件、运行文件)
mkdir -pv mysql/{data,log,tmp,run}
- 创建日志文件(启动错误日志、默认错误日志、慢查询日志、通用查询日志)
touch log/{mysqld_safe_error.log,alert.log,slow.log,general.log}
4 创建配置文件
创建服务配置文件 /etc/my.cnf 。
touch /etc/my.cnf
配置参考。
# mysqld_safe脚本启动时读取的配置
[mysqld_safe]
# 存放 MySQL 后台程序 pid 的文件位置
pid-file=/usr/local/mysql/run/mysqld.pid
# 启动错误日志
log-error=/usr/local/mysql/log/mysqld_safe_error.log
# 本地 mysql 客户端程序的配置块
[mysql]
# 本地 mysql 客户端连接的端口
port=3306
# 本地 mysql 客户端命令行提示信息
prompt=\\u@\\d \\r:\\m:\\s>
# 本地 mysql 客户端字符集
default-character-set=utf8mb4
# 开启命令补全
no-auto-rehash
# 所有mysql客户端程序读取的配置块
[client]
# 连接端口
port=3306
# mysql的主机和客户机在同一host上的时候,使用unix domain socket做为通讯协议的载体文件
socket=/usr/local/mysql/run/mysql.sock
# mysql服务端程序mysqld、mysqld_safe和mysqld_multi的配置文件
[mysqld]
# 进程崩溃时生成core file dump文件,便于程序调试和问题排查
core-file
# 该参数指定了安装 MySQL 的安装路径(mysql安装目录),填写全路径可以解决相对路径所造成的问题。
basedir=/usr/local/mysql
# 该参数指定MySQL的数据文件的存放目录,数据库文件即我们常说的 MySQL data 文件。
datadir=/usr/local/mysql/data
# 临时目录
tmpdir=/usr/local/mysql/tmp
# 用于错误消息的区域设置。默认值是en_US。服务器将参数转换为语言名,并将其与lc_messages_dir的值结合,以生成错误消息文件的位置。
lc_messages=zh_CN
# 错误消息所在的目录。服务器使用该值和lc_messages的值来生成错误消息文件的位置。
lc_messages_dir=/usr/local/mysql/share
# 默认的错误日志目的地。如果目标是控制台,则值为stderr。否则,目标是一个文件,log_error值是文件名。
log-error=/usr/local/mysql/log/alert.log
# 慢查询日志文件名。默认值是host_name-slow.log,但可以通过slow_query_log_file选项更改初始值。
slow_query_log_file=/usr/local/mysql/log/slow.log
# 通用查询日志文件的名称。默认值是host_name.log,但初始值可以通过general_log_file选项更改。
general_log_file=/usr/local/mysql/log/general.log
# mysql的主机和客户机在同一host上的时候,使用unix domain socket做为通讯协议的载体文件
socket=/usr/local/mysql/run/mysql.sock
# 服务端字符集
character-set-server=utf8mb4
# 此变量控制写入错误日志的消息中的时间戳的时区,以及写入文件的一般查询日志和慢查询日志消息中的时间戳的时区。
log_timestamps=SYSTEM
# 操作系统中可用于mysqld的文件描述符的数量。
open_files_limit=61535
# 同时允许的最大客户端连接数。
max_connections=1000
# mysql_stmt_send_long_data() C API函数发送的一个包或任何生成/中间字符串的最大大小,或任何参数的最大大小。默认是64MB。
max_allowed_packet=256M
# 如果设置为0,表名将按指定的方式存储,并且比较区分大小写。如果设置为1,表名将以小写形式存储在磁盘上,比较不区分大小写。如果设置为2,则表名按给定值存储,但以小写进行比较。此选项也适用于数据库名称和表别名。
lower_case_table_names=1
# 慢查询日志是否开启。取值为0(或OFF)表示关闭日志,取值为1(或ON)表示打开日志。默认值取决于是否给出——slow_query_log选项。日志输出的目标由log_output系统变量控制;如果该值为NONE,则即使启用了日志,也不会写入任何日志项。
slow_query_log=1
# validate_password插件的加载方法
plugin-load-add=validate_password.so
# validate-password在服务器启动时使用该选项来控制插件的激活
validate-password=FORCE_PLUS_PERMANENT
5 初始化数据库
- 修改安装目录归属
chown -R mysql.mysql /usr/local/mysql
- 初始化数据库
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
【注意】 5.7.44 推荐使用 mysqld --initialize 代替 mysql_install_db 进行初始化。
- 安装目录授权
chmod u+rwx -R /usr/local/mysql
- 服务配置授权
# 修改配置归属
chown mysql.mysql /etc/my.cnf
# 修改配置权限
chmod 644 /etc/my.cnf
6 启动服务
使用 service 方式启动
- 配置开机自启
# 把启动脚本 mysql.server 放到开机初始化目录 /etc/init.d/ ,并重命名为 mysqld
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
- 启动mysql服务
# 启动服务
service mysqld start
# 检查服务
service mysqld status
使用 systemd 方式启动
- 创建启动文件
touch /etc/systemd/system/mysql.service
- 打开启动文件,粘贴以下内容:
[Unit]
Description=MySQL Server
Documentation=https://dev.mysql.com/doc/refman/5.7/en/
[Service]
ExecStart=/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf
User=mysql
Group=mysql
Restart=always
RestartSec=3
LimitNOFILE=infinity
[Install]
WantedBy=multi-user.target
【注意】根据mysql实际安装路径和需求,修改ExecStart行中的MySQL启动命令和参数。
- 重载system配置
systemctl daemon-reload
- 启动mysql服务
# 启动服务
systemctl start mysql
# 添加开机自启
system enable mysql
# 检查服务
systemctl status mysql
7 配置mysql环境变量
- 打开全局配置 /etc/profile,添加内容
export PATH=$PATH:/usr/local/mysql/bin
后保存退出,也可以直接执行下方命令进行添加。
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
- 重载配置。
source /etc/profile
- 验证配置
mysql -V
配置数据库
1 修改root登录密码
在线安装方式
查看服务日志文件,获取初始密码。
grep 'temporary password' /var/log/mysqld.log | tail -n 1
初始密码在 root@localhost: 后面,如下示例
离线安装方式
grep 'temporary' /usr/local/mysql/log/alert.log
2 登录mysql
mysql -u root -p
3 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
【注意】mysql默认要求密码需要符合其口令复杂度策略,即包含字母大小写数字特殊符号等,如果只需要设置简单的密码,可以先修改密码校验级别,再修改密码。
-- 密码验证安全级别默认为medium,改为low,即不强制校验
set global validate_password_policy=LOW;
4 设置远程访问,刷新权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '新密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
常见问题
提示 ERROR 1820 (HY000) 错误
该错误表明你需要在执行其他语句之前先重置你的密码,通常是发生在首次安装MySQL或者首次登录到MySQL时,MySQL要求用户在使用数据库之前更改临时密码。
本文作者:505donkey
本文链接:https://www.cnblogs.com/505donkey/p/17945759
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步