本章教程,主要介绍如何在Centos7上安装MySQL8.0版本数据库(压缩包安装方式)
一、卸载系统自带的 Mariadb
1、查询
bash
rpm -qa|grep mariadb
2.、卸载
如果有查询结果,就进行卸载,没有就跳过该步骤。
bash
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

二、下载MySQL

这里需要知道自己的linux的glibc版本,不然安装的时候会提示glibc版本过低。查询方法如下:
bash
rpm -q glibc

下载之后,将压缩包上传到服务器上,准备安装MySQL。

三、安装步骤
说明:本次安装教程,是在之前没有安装过MySQL的系统上进行的,如果你之前安装过MySQL需要将MySQL相关的配置进行删除,包括用户组,以及MySQL相关的文件夹,避免在安装过程中出现错误。
1、解压安装包
将MySQL压缩包解压到/usr/local/mysql目录中。
bash
mkdir -p /usr/local/mysql
tar --strip-components=1 -xvf mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz -C /usr/local/mysql

2、创建MySQL组和用户
bash
# 创建用户组
groupadd mysql
# 创建用户并加入mysql用户组
useradd -g mysql mysql

3、更改所属的组和用户
bash
# 进入到/usr/local目录
cd /usr/local
chown -R mysql mysql/
chgrp -R mysql mysql/
chown -R mysql:mysql /usr/local/mysql
# 进入到mysql目录,创建data和logs目录
cd mysql && mkdir -p data logs && chown -R mysql:mysql data logs

4、新建MySQL配置文件
bash
vim /etc/my.cnf
bash
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#禁用dns解析
skip-name-resolve
#设置3306端口
port = 3306
#设置mysql的安装目录
basedir=/usr/local/mysql
#设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
#允许最大连接数
max_connections=200
#允许连接失败的次数
max_connect_errors=10
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#默认使用"mysql_native_password"插件认证
default_authentication_plugin=mysql_native_password
#设置服务器接收数据包大小
max_allowed_packet=64M
#配置错误日志
log_error=/usr/local/mysql/logs/mysql-error.log
#配置进程文件
pid-file=/usr/local/mysql/mysql.pid
#设置客户端发送数据包大小
max_allowed_packet=64M
#使MySQL不区分大小写
lower_case_table_names=1
给配置文件赋予权限
bash
chown 777 /etc/my.cnf
5、初始化MySQL
bash
./bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize

6、添加mysql服务,并设置开机自启
bash
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/rc.d/init.d/mysql
chkconfig --add mysql
chkconfig --level 345 mysql on
ln -s /usr/local/mysql/bin/mysql /usr/bin

四、启动MySQL服务
bash
# 启动
service mysql start
# 查看状态
service mysql status
# 停止
service mysql stop

五、查看临时密码,并登陆MySQL
bash
cat /usr/local/mysql/logs/mysql-error.log

bash
mysql -u root -p
填写临时密码,注意密码输入的时候是不可见的,直接复制粘贴密码即可。

六、修改密码
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
初次使用的时候,需要先修改密码,否则会报以上错误
bash
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

七、开启远程访问
如果你需要开启远程访问,可以用以下方式完成
注意事项:如果是虚拟机,记得关闭防火墙或者添加3306端口开放,如果是服务器,记得在服务器后台中的安全组中添加3306端口开放,否则远程连接的时候,会连接不上,在远程连接的时候,切勿使用弱密码,否则数据库会被脚本工具扫描,会造成不可估量的损失。
bash
use mysql;
update user set host = '%' where user = 'root';
flush privileges;
select host, user from user;
