centos8安装mysql-5.7.26

本文主要介绍centos8环境下,mysql-5.7.26的安装过程及自启动配置


前言

听说mysql要商业化了,很多公司都把数据库改成了Mariadb,那我为什么还要在这个时候写这个文章呢?
哎…一言难尽啊。
简单来说,最近在搞sonarqube,但是高版本的不支持mysql,并且没有pdf导出插件,只能退而求其次,降低soanrqube,那么问题来了,sonarqube-7.6是最后一版支持mysql,并且也找到了合适的pdf插件,想着学习一个技能就把东西吃透(那是不可能的,纯属手贱),安装个兼容版本的mysql。谁知道遇到了一大堆问题。
一世英名,完好无损。


一、mysql下载

下载地址:法师开的小门,10G

在这里插入图片描述

二、安装步骤

1.解压文件

将文件上传至规划好的目录下,并执行解压命令:

tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

修改解压后的文件名(linux 没有单独的改名命令):

mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql-5.7.26

2.创建、赋予权限

创建用户组:

groupadd mysql

创建用户:

useradd -r -g mysql mysql

查看用户组信息:

groups mysql

展示如下,即添加成功:
在这里插入图片描述
创建数据存储目录:

cd /home/mysql/mysql-5.7.26 && mkdir data

把data目录交给mysql来管理:

chown -R mysql:mysql /home/mysql/mysql-5.7.26/data

执行以下命令,查看效果:

cd /home/mysql/mysql-5.7.26 && ll

如下则设置成功:
在这里插入图片描述

三、启动mysql

1.配置mysql

执行命令,切换到安装目录:

cd /home/mysql/mysql-5.7.26

话说mysql怎么确定执行哪个配置文件呢?其实我们是可以看到mysql查找my.cnf的顺序的。
执行命令:
在这里插入图片描述

./bin/mysql --help|grep my.cnf

新增配置文件,名字为my.cnf:

vim my.cnf

配置文件中输入:

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/home/mysql/mysql-5.7.26
# 设置mysql数据库的数据的存放目录
datadir=/home/mysql/mysql-5.7.26/data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
#日志存放目录
log-error=/home/mysql/mysql-5.7.26/data/mysqld.log
pid-file=/home/mysql/mysql-5.7.26/data/mysqld.pid

保存文件。

2.初始化数据库

在安装目录执行命令:

./bin/mysqld --initialize --user=mysql --basedir=/home/mysql/mysql-5.7.26/ --datadir=/home/mysql/mysql-5.7.26/data/

3.启动mysql

在安装目录执行:

./home/mysql/mysql-5.7.26/support-files/mysql.server start

执行命令,查看mysql进程是否启动:

ps -ef|grep mysql

4. 登录、修改密码

在安装目录执行:

./bin/mysql -u root -p

输入上面截图中的密码,我这边是+sfn*Pllj7Ag

在这里插入图片描述
登录成功后,先修改密码,123456是我的密码:

alter user 'root'@'localhost' identified by '123456';

开放远端登录权限:

update mysql.user set host='%' where user='root';

刷新:

flush privileges;

四、设置开机自启

centos8已经不再建议通过rc.local或者使用软连接方式设置自启,我们这次通过把mysql注册成服务来完成自启操作。
执行命令:

vim /lib/systemd/system/mysql.service

上面命令是创建mysql.service并且编辑,这时候输入以下内容:

[Unit]
Description=MySQL Server(5.7.26)
# Documentation=main:mysqld(5.7.26)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
#After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=root
Group=root

PIDFile=/home/mysql/mysql-5.7.26/data/mysqld.pid

ExecStart=/home/mysql/mysql-5.7.26/support-files/mysql.server start
ExecStop=/home/mysql/mysql-5.7.26/support-files/mysql.server stop
Restart=on-failure

LimitNOFILE=5000

保存文件,并执行:

systemctl daemon-reload

关闭当前mysql服务,先查看是否在启动中:

ps -ef|grep mysql

如果如下图所示,则使用命令关闭服务:
在这里插入图片描述
执行命令:

kill -9 2137 2394

通过注册的服务启动mysql:

systemctl start mysql.service

通过注册的服务查看mysql:

systemctl status mysql.service

通过注册的服务停止mysql:

systemctl stop mysql.service

如果想要尝试的话,可以通过reboot来重启服务器,来确定下是否已开启自启。前提是,先执行这个命令:

systemctl enable mysql.service

五、FAQ

1. SSL未关闭

报错信息:

[Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key

解决方案:
my.cnf[mysqld]标签下设置:

skip-ssl

2. bin目录下mysqld脚本后不能跟随start或者stop

报错信息如下:

[ERROR] Too many arguments (first extra is 'start').
[Note] Use --verbose --help to get a list of available options!
[ERROR] Aborting

解决方案:
使用support-files目录下的mysql.server来启动/停止mysql

3. 自启服务注册后,启动后自动停止

在执行过ExecStart后直接执行ExecStop
状态信息展示如下:
在这里插入图片描述
解决办法,在mysql.service中添加下面这行:

PIDFile=/home/mysql/mysql-5.7.26/data/mysqld.pid

4. SELinux 未关闭

报错信息如下:

4月 21 14:15:51 localhost.localdomain setroubleshoot[5327]: AnalyzeThread.run(): Set alarm timeout to 10
4月 21 14:15:51 localhost.localdomain setroubleshoot[5327]: AnalyzeThread.run(): Cancel pending alarm
4月 21 14:15:51 localhost.localdomain setroubleshoot[5327]: failed to retrieve rpm info for /home/mysql/mysql-5.7.26/support-files/mysql.server
4月 21 14:15:52 localhost.localdomain setroubleshoot[5327]: SELinux is preventing /usr/lib/systemd/systemd from 'read, open' accesses on the file /home/mysql/mysql-5.7.26/support-files/mysql.server. For complete SELinux messages run: sealert -l 2e4574ff-3622-4186-890a-f62c056d34cb
4月 21 14:15:52 localhost.localdomain setroubleshoot[5327]: SELinux is preventing /usr/lib/systemd/systemd from 'read, open' accesses on the file /home/mysql/mysql-5.7.26/support-files/mysql.server.
                                                             
                                                             *****  Plugin catchall (100. confidence) suggests   **************************
                                                             
                                                             If you believe that systemd should be allowed read open access on the mysql.server file by default.
                                                             Then you should report this as a bug.
                                                             You can generate a local policy module to allow this access.
                                                             Do
                                                             allow this access for now by executing:
                                                             # ausearch -c '(l.server)' --raw | audit2allow -M my-lserver
                                                             # semodule -X 300 -i my-lserver.pp

解决方案,说起来简单也是很简单,但是对于初学者或者不熟悉linux或者英文不好的人,那真的是一种折磨:
首先,看最后两行,人家已经提示了:
在这里插入图片描述
其次,分别执行上面的两行命令:

ausearch -c '(l.server)' --raw | audit2allow -M my-lserver
semodule -X 300 -i my-lserver.pp

最后,如果问题还是解决不了,那么关闭SELiunx吧,这是一种安全策略,此处引用一个网址:https://www.cnblogs.com/activiti/p/7552677.html,不是本人写的,但是可以一起学一下。


总结

学习之路太难了,时时刻刻在遭受社会的毒打,但是除了学习,提升自己还能做什么?耐心与坚持缺一不可。加油~骚年

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值