本文假设服务器是全新的,未曾安装mysql或其相关分支,并且使用root用户安装
准备
- 查看linux系统版本
cat /etc/system-release
# 或者
cat /etc/redhat-release
- 检查是否已安装libaio
# 查询是否存在libaio
yum search libaio
# 不存在则安装
yum install libaio
- 检查是否已安装mysql或相关分支
如下查询和卸载是针对rpm的,如果是二进制安装形式,同样需要先停止服务,然后删除相关文件。
# 查询
rpm -qa | grep mysql
rpm -qa | grep mariadb
# 存在:1.停止
systemctl stop mysql
# 或者
kill -9 mysql_pid
# 存在:2.卸载
# 如:rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
rpm -e --nodeps mysql*(自行补全--"*"无效,需要具体的)
- 检查内存和存储
# 查看内存,建议大于2g
free -g
# 查看存储(留意挂载目录)
df -h
下载
- 查看glibc版本和CPU架构
选择安装包时需要
# 查看glibc版本
ldd --version
# 查看CPU架构
uname -m
- 选择合适的版本并下载
- 安装包验证(可选)
如果害怕安装包被非法篡改,可以通过MD5校验。
# 这里利用linux服务器上的md5sum命令验证。输出的值应和下图中的值一致。
md5sum mysql-8.0.36-linux-glibc2.17-x86_64.tar.xz
这个图就是上一步骤中第一张图的一部分
安装
这里我打算安装到/data/mysql
目录下,如下所有操作都是假设安装到/data/mysql
目录下,你可以自定义。
- 新增
/etc/my.cnf
文件
vi /etc/my.cnf
按i
增加如下内容,然后按Esc
->:wq
保存并退出。
my.cnf中指定了basedir
和datadir
,并且都以/data/mysql
开始,所以我们需要解压安装包到/data
目录下,并重命名文件夹为mysql
[mysql]
default-character-set=utf8mb4
[mysqld]
basedir=/data/mysql
datadir=/data/mysql/data
character_set_server=utf8mb4
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
- 解压到指定目录
解压到/data
目录并重命名为mysql
tar -xvf mysql-8.0.36-linux-glibc2.17-x86_64.tar.xz -C /data
cd /data
mv mysql-8.0.36-linux-glibc2.17-x86_64 mysql
此时可以看到解压出来的文件所属的用户及用户组是一些数值,这是有问题的,需要重新授权一下
# 将/data/mysql及其子目录授权给root用户组的root用户
chown -R root:root /data/mysql
- 创建mysql用户组和mysql用户
# 查看是否存在mysql用户组
more /etc/group | grep mysql
# 查看mysql用户属于哪个组
groups mysql
# 查看当前活跃的用户列表
w
# 不存在则创建
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
- 创建mysql-files并授权
cd /data/mysql
mkdir mysql-files
# 注意不要码成mysql-files/
chown mysql:mysql mysql-files
chmod 750 mysql-files
启动
- 初始化
cd /data/mysql
# 会生成一个临时密码,需要记住,后续修改密码时需要使用
bin/mysqld --initialize --user=mysql
bin/mysql_ssl_rsa_setup
# 后台启动
bin/mysqld_safe --user=mysql &
- 修改密码、新增用户
# 输入临时密码(建议复制粘贴,不容易出错)
bin/mysql -uroot -p
# 修改密码
alter user 'root'@'localhost' identified by '123456';
# 创建远程登录账号并授权
create user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
# 刷新并退出
flush privileges;
quit;
- 添加命令到环境中
vi /etc/profile
输入如下内容
# 注意:在文件内容末尾添加
export PATH=$PATH:/data/mysql/bin
使配置生效
source /etc/profile
验证:任意目录下可以成功执行mysql --version
- 开机自启动
cd /data/mysql
# 注册服务
cp support-files/mysql.server /etc/init.d/mysql.server
# 设置开机自启动
systemctl enable mysql.server
验证开机自启动
# 重启
reboot
# 重启后执行如下命令
systemctl status mysql