一、系统环境准备
1、查看架构类型,命令如下:
uname -m
2、查看glibc版本,命令如下:
ldd --version | grep libc
执行上述命令,获取到本系统架构为 x86_64,glibc 版本为 2.28。
3、检查系统中是否已安装 MySQL 或 MariaDB ,如果有安装需要卸载,命令参考:
# 检查是否安装 MySQL
rpm -qa | grep mysql
# 检查是否安装 MariaDB
rpm -qa | grep mariadb
# 卸载
rpm -e <软件包名>
# 强制卸载
rpm -e --nodeps <软件包名>
二、下载安装包
进入 MySQL 官网下载页面,下载合适的二进制安装包
- “Select Version” 根据需要选择;
- “Select Operating System” 选择 “Linux - Generic”;
- “Select OS Version” 根据上面查询到的系统信息选择。
三、安装配置
1、将安装包上传到服务器,这里选择上传到 /opt 目录下。
2、解压安装包并重命名,命令如下:
# 解压
tar -xvJf mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz
# 重命名,可选,目录名称保留版本号方便后期维护
mv mysql-8.4.3-linux-glibc2.28-x86_64 mysql-8.4.3
3、创建 MySQL 数据目录和日志目录,这里的具体路径如下:
- 数据目录:/data/mysql/data;
- 日志目录:/data/mysql/log。
4、在 /etc 目录下添加 my.cnf 配置文件,参考配置如下:
[mysqld]
# mysql 启动用户
user=root
# 端口,为了安全不使用默认端口
port=13306
# 安装目录,没有安装到默认目录 /usr/local/mysql 下,
# 使用自带的 mysql.server 脚本启动mysql服务必须配置
basedir=/opt/mysql-8.4.3
# 数据目录
datadir=/data/mysql/data
# 允许最大连接数
max_connections=100
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 查询日志
general_log = 1
general_log_file = /data/mysql/log/mysql.log
# 慢查询日志
slow_query_log = 1
slow_query_log_file = /data/mysql/log/slow.log
long_query_time = 2
# 错误日志
log_error = /data/mysql/log/error.log
# 二进制日志
server_id = 1
log_bin = /data/mysql/log/mysql-bin
log_bin_index=/data/mysql/log/mysql-bin.index
binlog_format=MIXED
binlog_expire_logs_seconds = 604800
max_binlog_size=500M
[mysql]
# 设置命令行客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
5、执行 MySQL bin 目录下的 mysqld 文件,初始化数据库
# 进入 MySQL bin 目录
cd /opt/mysql-8.4.3/bin
# 执行初始化命令
./mysqld --initialize --user=root --basedir=/opt/mysql-8.4.3 --datadir=/data/mysql/data
6、在初始化日志中获取临时密码,如果终端没有输出日志则在日志文件中查找,MySQL 日志一般由配置文件中的 log_error 指定,根据上面的配置信息,日志存放在 /data/mysql/log/error.log 中
7、执行 MySQL support-files 目录下的 mysql.server 脚本,启动数据库服务,将使用 /etc/my.cnf 配置文件
# 进入 MySQL support-files 目录
cd /opt/mysql-8.4.3/support-files
# 启动
./mysql.server start
# 停止
./mysql.server stop
# 查看支持参数
./mysql.server
8、将 MySQL bin 目录添加到全局环境变量中,编辑 /etc/profile 文件,在文件最后添加如下语句:
export PATH=$PATH:/opt/mysql-8.4.3/bin
执行 source /etc/profile 命令让配置立即生效。
9、将MySQL support-files 目录下的 mysql.server 脚本拷贝到 /etc/init.d 目录下,支持用 systemctl start mysql 命令启动数据库服务
# 关停之前已启动的 MySQL 服务
./opt/mysql-8.4.3/support-files/mysql.server stop
# 将脚本拷贝到 /etc/init.d/ 目录下
cp /opt/mysql-8.4.3/support-files/mysql.server /etc/init.d/
# 启动 MySQL 服务
systemctl start mysql
# 停止 MySQL 服务
systemctl stop mysql
注:我在将 mysql.server 拷贝到 /etc/init.d 目录下后,执行 systemctl start mysql 命令启动服务失败,提示 “Unit mysql.service could not be found.” 错误,在重启服务器后解决,应该有不重启服务器的方式解决,如果你知道希望能告诉我。
四、用户配置
执行 mysql -uroot -p 命令,然后输入初始化时生成的临时命令,本地登录 MySQL 服务。
1、修改临时密码
-- 查看已有用户
select user, host from mysql.user;
-- 修改 root 密码
alter user 'root'@'localhost' identified by '新密码';
2、允许远程登录
-- 选中 mysql 库
use mysql;
-- 不限制 root 用户远程连接 IP
update user set host='%' where user ='root';
-- 重新加载权限表
flush privileges;
3、新建用户
-- 创建用户
create user '用户名'@'%' identified by '密码';
-- 赋予权限
grant all privileges on *.* TO '用户名'@'%';