1、检查环境中是否已有mariadb文件
在CentOS中默认安装MariaDB,它是MySQL的分支,在此之前,我们可以先通过以下指令查询:
rpm -qa | grep -i mariadb
如果有查到列表,就通过以下指令卸载,此处有几条就对应的使用几个rpm -e --nodeps:
[root@centos7 opt]# rpm -e --nodeps xxx
[root@centos7 opt]# rpm -e --nodeps xxx
本机因为之前已卸载,所以省略。
2、检查是否安装过MySQL
此处如果之前没有安装过,可以直接省略,如果安装过,可通过一下直接进行移除:
yum -y remove mysql
3、安装MySQL依赖libaio包libaio
libaio是Linux下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高。
yum install libaio
4、下载MySQL安装包
官方下载地址:https://downloads.mysql.com/archives/community/
5、解压压缩文件
进入/usr/local目录下,查看当前目录文件:
通过下方指令将压缩包文件解压tar.xz
:
tar -xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
重命名:
mv mysql-8.0.26-linux-glibc2.12-x86_64 mysql
进入mysql目录:
cd mysql/
创建数据文件夹:
mkdir data
6、MySQL安装目录赋予访问权限并创建MySQL组和用户
进入mysql目录下,通过以下指令修改mysql的访问权限。
-R是目录下所有文件,777就是高权限(读、写、执行)。
chmod -R 777 /usr/local/mysql 意思就是将mysql目录下所有文件都给予最高权限。
chmod -R 777 /usr/local/mysql/
创建用户组:
groupadd mysql
创建用户:
useradd -r -g mysql -s /bin/false mysql
添加用户mysql到组mysql中:
chown -R mysql:mysql ./
7、修改MySQL配置文件
通过以下指令修改mysql配置文件:
vi /etc/my.cnf
在配置文件中输入如下内容:
配置:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
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
8、安装MySQL并启动MySQL服务
进入mysql目录的bin目录下,执行以下指令安装mysql。
./mysqld --initialize --console
完成后会生成一个随机密码,本次生成的密码是nlQW+>FG*7+%
,这个密码第一次登录的时候需要用到。
[Server] A temporary password is generated for root@localhost: nlQW+>FG*7+%
mysql.server服务在安装目录的support-files目录下,执行以下指令进行启动:
./mysql.server start
此处反馈的结果是启动错误,我们需要执行下方命令给mysql安装目录重新赋予一下权限,然后再次执行。
chmod -R 777 /usr/local/mysql #文件夹修改权限
./mysql.server start #启动MySQL服务
9、添加MySQL到系统进程
执行下方指令添加mysql到系统进程:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
10、设置MySQL服务自启动
执行下方两行指令实现mysql服务自启动:
chmod +x /etc/init.d/mysqld
systemctl enable mysqld
11、修改root用户原始密码
修改密码前需要我们先登录mysql,在mysql安装目录的bin目录下进行登录, 在password后输入我们之前记录的初始随机密码。
登录成功后,执行下方指令修改密码,BY后面的字符串就是新密码,自己选择好记又安全的。
alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxxxxxx';
12、设置允许远程登录并重启
执行以下指令设置允许远程登录,最终我们肯定要通过Navicat等客户端工具来连接MySQL的。
use mysql;
update user set user.Host='%'where user.User='root';
flush privileges;
quit;
上步操作后,我们执行了quit退出了mysql,现在重新启动服务。上步操作后,我们执行了quit退出了mysql,现在重新启动服务。
systemctl restart mysql
service mysql restart
通过以下指令查看MySQL服务是否启动成功:
systemctl status mysql
13、防火墙开发3306端口
执行下方执行查看防火墙端口开放列表,本机之前开放过3306端口,所以列表中存储在,如果列表中没有3306端口,请继续往下看:
firewall-cmd --list-all
防火墙开放3306端口指令,--permanent为永久生效,如果没有此参数,服务器重启后配置失效:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
到这一步基本上完成了。
常见错误:
报错:
Warning: mysqld.service changed on disk. Run 'systemctl daemon-reload' to reload units.
警告:磁盘上的mysqld.service已更改。运行“systemctl daemon-reload”重新加载单位。
解决:
systemctl daemon-reload
报错:
Redirecting to /bin/systemctl start mysqld.service Failed to start mysqld.service: Unit not found.
启动mysql服务正在重定向至/bin/systemctl restart mysql.service
无法重新启动mysql.service:找不到单元。
执行:
检查mysql.server在哪里?
find / -name mysql.server
返回:/usr/local/mysql/support-files/mysql.server
执行:
把此服务复制到init.d下。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
报错:
Starting MySQL.Logging to '/usr/local/mysql/data/VM-0-9-centos.err'.ERROR! The server quit without updating PID file (/usr/local/mysql/data/VM-0-9-centos.pid).
执行:
rm -rf /usr/local/mysql/data/VM-0-9-centos.err
rm -rf /usr/local/mysql/data/VM-0-9-centos.pid
报错:mysql.service is not a native service, redirecting to /sbin/chkconfig.Executing /sbin/chkconfig mysql on
mysql.service不是本机服务,正在重定向到/sbin/chkconfig。
执行:
1、创建MySQL服务单元文件:
首先,你需要创建一个Systemd服务单元文件,以便Systemd可以管理MySQL服务。可以使用任何文本编辑器创建此文件,例如/etc/systemd/system/mysql.service。
sudo vi /etc/systemd/system/mysql.service
2、编辑服务单元文件:
在编辑器中,添加以下内容到mysql.service文件中:
配置:
[Unit]
Description=MySQL Database Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --pid-file=/var/run/mysqld/mysqld.pid
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGTERM
TimeoutSec=300
[Install]
WantedBy=multi-user.target
3、重新加载Systemd管理的服务列表:
执行以下命令以重新加载Systemd管理的服务列表,使新创建的MySQL服务单元文件生效:
sudo systemctl daemon-reload
4、启动MySQL服务:
现在,你可以启动MySQL服务了:
sudo systemctl start mysql
5、设置MySQL开机自启动:
如果你希望MySQL在系统启动时自动启动,可以使用以下命令将其设置为开机自启动:
sudo systemctl enable mysql
6、检查MySQL服务状态:
可以使用以下命令来检查MySQL服务的状态:
sudo systemctl status mysql
以上步骤完成后,你的MySQL服务应该已成功地由Systemd管理。