CrazyAirhead

疯狂的傻瓜,傻瓜也疯狂——傻方能执著,疯狂才专注!

0%

如何离线安装Mysql8.0.20

准备

net-tools和perl

安装时会依赖net-tools和perl包,需要从Centos的安装包中提取出对应的安装包net-tools-*.rpm和perl-*.rpm。

1
rpm -Uvh *.rpm --nodeps --force

MySQL安装包

从Mysql官网下载MySQL安装包

  • mysql-community-common-8.0.20-1.el7.x86_64.rpm
  • mysql-community-libs-8.0.20-1.el7.x86_64.rpm
  • mysql-community-client-8.0.20-1.el7.x86_64.rpm
  • mysql-community-server-8.0.20-1.el7.x86_64.rpm

卸载系统自带Mysql

命令如下:

1
2
3
4
rpm -qa|grep mysql 
rpm ‐e --nodeps mysql-version(此处为上一命令的具体结果)
rpm -qa|grep mariadb
rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64

关闭防火墙

1
2
3
4
5
#关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld
#关闭setlinux
setenforce 0

准备

创建数据目录

1
2
3
mkdir -p /data/mysql/data
mkdir -p /data/mysql/log
chown -R mysql:mysql /data/mysql

安装

安装如下顺序安装

1
2
3
4
rpm -ivh mysql-community-common-8.0.20-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-8.0.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.20-1.el7.x86_64.rpm

修改my.cnf配置

1
2
3
4
5
[mysqld]
datadir= /data/mysql/data
socket=/var/lib/mysql/mysql.sock
log-error= /data/mysql/log
pid-file=/var/run/mysqld/mysqld.pid

初始化数据库

1
mysqld --initialize --user=mysql --basedir=/var/lib/mysql --datadir=/data/mysql/data 

1
mysql_install_db --user=mysql --datadir=/data/mysql/data

启动MySQL服务

1
2
systemctl start mysqld
systemctl enable mysqld

修改登录密码方法1

1
2
3
4
cat /var/log/mysqld.log | grep password
mysql -uroot -p
mysql> ALTER USER root@localhost IDENTIFIED BY 'Password@2020';
mysql> flush privileges;

修改登录密码方法2

配置本地无密码登录

/etc/my.cnf,增加skip-grant-tables

1
2
[mysqld]
skip-grant-tables

重启MySQL

1
systemctl resart mysqld

设置密码

1
2
3
4
mysql -u root
mysql> flush privileges;
mysql> ALTER USER root@localhost IDENTIFIED BY 'Password@2020';
mysql> flush privileges;

/etc/my.cnf,删除skip-grant-tables

重启MySQL

1
systemctl resart mysqld

rpm -ivh mysql-community-common-8.0.20-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-8.0.20-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-8.0.20-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-8.0.20-1.el7.x86_64.rpm

修改数据文件路径

Mysql修改数据文件默认目录datadir

1、停止服务

1
2
3
service mysql stop
service mysqld stop
mysqladmin -uroot shutdown -p

2、创建目录

1
2
3
4
5
6
cd /data
mkdir mysql
chown mysql:mysql mysql
cd mysql
cp -pr /var/lib/mysql/* .
# chown -R -v mysql:mysql /data/mysql

3、修改my.cnf

1
vi /etc/my.cnf

# datadir=/var/lib/mysql
# socket=/var/lib/mysql/mysql.sock
datadir=/data/mysql
socket=/data/mysql/mysql.sock

4、为mysql.sock加连接

1
ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock

5、启动mysql

1
2
service mysql start
service mysqld start

背景

之前默认安装mysql的时候安装在系统盘,生成binlog的时候导致系统盘空间不足,需要把mysql移动到其它盘。

操作

1、停止 MySQL 8.0 服务,使用下面的指令

1
service mysqld stop

2、将默认的数据目录移至目标位置

1
mv /var/lib/mysql/ /home/

3、建立软连接

1
ln -s /home/mysql /var/lib/

4、启动服务

1
service mysqld start

问题

出现下面的错误

错误日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@localhost data] systemctl start mysqld
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
[root@localhost data]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 二 2020-09-29 10:30:18 CST; 9s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 19328 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)
Process: 19305 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 19328 (code=exited, status=1/FAILURE)
Status: "Server startup in progress"
Error: 13 (权限不够)

9月 29 10:30:17 localhost.localdomain systemd[1]: Starting MySQL Server...
9月 29 10:30:18 localhost.localdomain systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
9月 29 10:30:18 localhost.localdomain systemd[1]: Failed to start MySQL Server.
9月 29 10:30:18 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state.
9月 29 10:30:18 localhost.localdomain systemd[1]: mysqld.service failed.

解决

需要将Selinux临时关闭才能启动成功:

1
2
[root@localhost /]# setenforce 0 
[root@localhost /]# systemctl start mysqld

欢迎关注我的其它发布渠道