一. 准备工作
1.下载
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
2.解压
tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
3.重命名
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql8
4.移动文件到指定目录
mv mysql8 /dev_tools/mysql8
5.切换到对应目录
cd /dev_tools/mysql8
二. 开始安装
6.先创建数据存储文件夹
mkdir data
7.创建用户组以及用户和密码
groupadd mysql
# 为添加的用户指定相应的用户组
useradd -g mysql mysql
8.授权用户
#将/dev_tools/mysql8及其子目录和文件递归处理改变所有者
chown -R mysql.mysql /dev_tools/mysql8
9.切换到bin目录下
cd bin
10.初始化基础信息
./mysqld --user=mysql --basedir=/dev_tools/mysql8 --datadir=/dev_tools/mysql8/data/ --initialize
注意:
如果在这里报错:
./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
出现该问题首先检查该链接库文件有没有安装使用 rpm -qa|grep libaio命令进行核查
运行该命令后发现系统中无该链接库文件
使用命令,yum install libaio-devel.x86_64安装
安装成功后,继续运行数据库的初始化命令,成功后得到临时密码,记得保存,等会需要用
11.编辑/etc/my.cnf
vim /etc/my.cnf
内容:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/dev_tools/mysql8
# 设置mysql数据库的数据的存放目录
datadir=/dev_tools/mysql8/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
12.添加mysqld服务到系统
这里要切换到安装目录下执行
cd /dev_tools/mysql8
cp -a ./support-files/mysql.server /etc/init.d/mysql
13.授权以及添加服务
# 添加可执行权限
chmod +x /etc/init.d/mysql
# 添加服务
chkconfig --add mysql
14.启动mysql服务
service mysql start
15.查看启动状态
service mysql status
16.将mysql命令添加到服务
ln -s /dev_tools/mysql8/bin/mysql /usr/bin
# 如果存在了,覆盖就执行
ln -sf /usr/local/mysql/mysql-8.0.20/bin/mysql /usr/bin
三. 登录改密码配置
17.用临时密码登录
mysql -uroot -p
此时若出现错误mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
解决方法如下
联网状态或者有yum源可以直接安装缺失的包文件:
yum install libncurses* -y
18.修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
flush privileges;
其中your_password是新的密码
19.刷新权限, 设置可以远程连接
use mysql;
update user set host='%' where user='root';
flush privileges;
exit;
20.放开端口重启防火墙
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
21.(可选)关闭端口重启防火墙
firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --reload
遇到的坑
初始化完成后, 修改配置文件,添加 lower_case_table_names=1 设置sql大小写敏感后启动服务报错如下图
原因在mysql官方文档中有写:
lower_case_table_names can only be configured when initializing the server. Changing the lower_case_table_names setting after the server is initialized is prohibited.
Lower_case_table_names只能在初始化服务器时配置。服务初始化后禁止修改lower_case_table_names。