MYSQL 8 安装–Linux centos7 系统

1. 前提:Linux系统上是否安装其他的数据库,若有先卸载

1.1 查看安装的包:

rpm -qa | grep mysql

1.1.1 检查MariaDB是否安装:

yum list installed | grep mariadb

1.2 卸载包:

rpm -e --nodeps mysql-*

1.2.1 卸载MariaDB:

yum -y remove mariadb*

1.3 查看mysql路径:

whereis mysql

1.4 查找MySQL文件所在目录:

find / -name mysql

1.5 依次删除:

rm -rf 文件

2. 下载

2.1 本地上传压缩包

2.1.1 通过官网下载,然后上传到服务器

官网地址:https://dev.mysql.com/downloads/mysql/

2.1.2 通过xftp上传到mysql的预安装的目录

2.2 在预安装目录下执行 wget 命令下载 MySQL8 压缩包

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz

3. 解压安装

3.1 解压指定路径

tar -xzvf 包.tar -C 指定的解压路径

3.2 安装,配置环境变量

编辑 vi /etc/profile 配置环境变量

3.2.1 添加变量

export PATH=$PATH:/mysql8安装路径/bin

3.2.2 更新profile文件:

source /etc/profile

4. 编辑my.cnf

4.1 在/etc/目录下新建 my.cnf 配置文件,写入以下内容:

Tips:mysql8+版本,Linux默认区分大小写;
所以在数据库初始化之前必须先在配置文件写入 “不区分大小写”lower_case_table_names = 1

vi /etc/my.cnf

[client]
port=3306
socket=/tmp/mysql/mysql.sock

[mysqld]
port=3306
user=mysql
socket=/tmp/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=error.log

transaction_isolation = READ-COMMITTED
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
lower_case_table_names = 1
default_authentication_plugin=mysql_native_password

skip-grant-tables

4.2 my.cnf 3处需要修改的位置

4.2.1 socket 的路径

根据实际创建的 socket 路径进行修改

4.2.2 basedir的路径

根据实际安装 MySQL8 的安装路径进行修改

4.2.3 datadir的路径

根据实际创建的 data 路径进行修改

5. 创建用户和用户组

5.1 创建用户组:

groupadd mysql

5.2 创建用户:

useradd -r -g mysql mysql

6. 更改目录权限

chown -R mysql:mysql /usr/local/mysql8
chown -R mysql:mysql /tmp/mysql
chmod -R 777 /usr/local/mysql8/data/
chmod -R 755 /tmp/mysql/ /usr/local/mysql8/

7. 初始化数据库

7.1 在bin目录下,执行:

./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

7.2 记住初始化密码

这里因为设置了 skip-grant-tables ,无密码登录

7.3 在 bin/ 目录下启动,执行命令

/usr/local/mysql9/support-files/mysql.server start

7.4 查看启动状态

systemctl status mysqld.service

8. MySQL设置连接

8.1 登录数据库

mysql -uroot -p

8.2 修改密码,允许远程

进入mysql库

use mysql;

清空密码

update user set authentication_string='' where user='root';
flush privileges;

修改密码

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

允许远程

update user set host='%' where USER='root';
flush privileges;
alter user 'root'@'%' identified with mysql_native_password by 'root';
flush privileges;

保存退出后,重新编辑my.cnf文件,注释掉 #skip-grant-tables ,然后重启数据库

9. 启动MySQL

9.1 端口加入防火墙

9.1.1 加入端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

9.1.2 重启:

firewall-cmd --reload

9.1.3 查看所有的防火墙规则:

iptables -nL

9.1.4 查看开放的端口:

firewall-cmd --zone=public --list-ports

9.2 启动数据库

9.2.1 设置自动启动

cd support-files/

cp mysql.server /etc/init.d/mysql

chmod 755 /etc/init.d/mysql

cd /etc/init.d

chkconfig --add mysql

chkconfig --level 345 mysql on

mysql restart

10. 启动报错情况

10.1 The server quit without updating PID file

Chrome上有很多的解决方法:分别是:
①:权限问题,mysq.cnf和所定义的mysql数据库存放目录的权限,要保证是mysql用户的权限

②:进程中有mysql的进程,上次的退出并没有自动结束该pid,导致新的进程无法启动

③:进入mysql数据库的存放目录,如果有index后缀的都删除也可以。

④:my.cnf 这个配置文件内容不对,检查是否定义了数据库存放目录,如果没有定义,请立刻定义。

⑤:错误日志目录不存在解决方法:使用“chown” “chmod”命令赋予mysql目录所有者及权限。

当然,还有一种情况:10.2

10.2 在没有停数据库服务的情况下,数据库服务器被宕机

机器重启后,试图重启MySQL服务,一直报错 10.1 的错,试过以上几种方法都不行,于是查看了详细错误日志,显示:
Assertion failure: fut0lst.ic:86:addr.page == FIL_NULL || addr.boffset >= FI……
①:设置成恢复模式,在 /etc/my.cnf中添加如下配置

innodb_force_recovery = 1

如果1不能启动成功,再逐步增加为2/3/4等。直到能启动mysql!

文档更新时间: 2021-09-01 10:27   作者:csx