MySQL8.0安装

时间:2022-05-28 06:39:12

MySQL 8.0安装

MySQL8从官网下载的压缩包都是tar.xz格式的,

1:先解压这个压缩包

[[email protected] src]# xz -d mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz 
[[email protected] src]# ls mysql-8.0.18-linux-glibc2.12-x86_64.tar -lh
-rw-r--r--. 1 7155 31415 2.6G Sep 22 22:33 mysql-8.0.18-linux-glibc2.12-x86_64.tar
[[email protected] src]# tar xvf mysql-8.0.18-linux-glibc2.12-x86_64.tar -C /usr/local/

2:创建软连接,创建数据目录和日志目录

[[email protected] src]# cd /usr/local/
[[email protected] local]# ln -s mysql-8.0.18-linux-glibc2.12-x86_64 mysql
[[email protected] local]# ll mysql
lrwxrwxrwx. 1 root root 35 Dec 17 18:06 mysql -> mysql-8.0.18-linux-glibc2.12-x86_64
[[email protected] local]# mkdir -p /data/mysql

3:创建mysql用户,mysql组

shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql

3:初始化数据库

如果有配置文件,在初始化之前加入,初始化之后加入,启动的时候总报错如下内容:【这里应该是某个参数设置问题】

MySQL8.0安装MySQL8.0安装
[[email protected] tmp]# service mysqld start
Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/vmtest.pid).

# 日志里面就三行
mysqld: File /data/mysq/mysql-bin.index not found (OS errno 2 - No such file or directory)
2019-12-17T10:56:39.876760Z 0 [System] [MY-010116] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.18) starting as process 5782
2019-12-17T10:56:39.883691Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-12-17T10:56:39.883960Z 0 [System] [MY-010910] [Server] /usr/local/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.18)  MySQL Community Server - GPL.
报错内容

先写配置文件,然后再初始化:其简易配置如下

MySQL8.0安装MySQL8.0安装
[mysqld]
port=3306
datadir=/data/mysql
basedir=/usr/local/mysql
default_authentication_plugin=mysql_native_password
server_id=3
binlog_format=ROW
socket=/data/mysql/mysql.sock

[mysqld_safe]
pid-file=/data/mysql/vmtest.pid
log-error=/data/mysql/vmtest.err
简易配置
[[email protected] ~]# cd /usr/local/mysql
[[email protected] mysql]# ./bin/mysqld --datadir=/data/mysql/ --user=mysql --initialize 
2019-12-17T10:11:25.378824Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.0.18-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.18) initializing of server in progress as process 1028
2019-12-17T10:11:40.271309Z 5 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: eJfRVq em9.&
[[email protected] mysql]# 

上面依然有临时密码这个说法,

4:启动数据库,

更改数据目录的属主和属组,然后拷贝启动脚本。

[[email protected] mysql]# chown -R mysql:mysql /data/mysql
[[email protected] mysql]# pwd
/usr/local/mysql
[[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysqld

更改mysqld配置文件中basedir和datadir的位置,

basedir=/usr/local/mysql/
datadir=/data/mysql/

启动mysql服务【下面警告应该是在centos7上应该使用systemctl启动,但是因为习惯这里还是使用了service】

[[email protected] mysql]# service mysqld start
Warning: mysqld.service changed on disk. Run systemctl daemon-reload to reload units.
Starting MySQL.Logging to /data/mysql/vmtest.err.
.. SUCCESS! 

连接mysql服务:【这里和MySQL 5.7一样,仍然需要更改密码】

[[email protected] mysql]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 9
Server version: 8.0.18

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type help; or h for help. Type c to clear the current input statement.

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> alter user root@localhost identified by [email protected]#$;
Query OK, 0 rows affected (0.06 sec)

整体的安装步骤和MySQL5.7一样,下面说明第一个MySQL5.7不一样的地方。

MySQL的验证插件

mysql的用户验证都是通过插件的方式的,之前的版本中使用的是mysql_native_password插件,但是在MySQL8.0中使用的是caching_sha2_password,这样在MySQL8中创建的用户,在使用旧版本的客户端连接是会有问题的,实例如下:

创建一个账号:【说明,在MySQL8之前,我们可以使用grant语句把创建账号和授权合并成一条语句,但是MySQL8中必须分为如下的两条语句】

mysql> create user dba@% identified by 123456;
Query OK, 0 rows affected (0.06 sec)

mysql> grant all privileges on *.* to dba@%;
Query OK, 0 rows affected (0.05 sec)

本地连接一切正常:

[[email protected] mysql]# mysql --version
mysql  Ver 8.0.18 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
[[email protected] mysql]# mysql -udba -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 14
Server version: 8.0.18 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type help; or h for help. Type c to clear the current input statement.

mysql> 

但是远程连接就报错了:

[[email protected] ~]$ mysql --version
mysql  Ver 14.14 Distrib 5.6.34, for Linux (x86_64) using  EditLine wrapper
[[email protected] ~]$ mysql -udba -p -h 10.9.68.201 
Enter password: 
ERROR 2059 (HY000): Authentication plugin caching_sha2_password cannot be loaded: /usr/local/mysql/lib/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
[[email protected] ~]

解决办法,更改MySQL8的默认插件,使其仍为mysql_native_password.

mysql> show variables like default_authentication_plugin;     【更改这个参数需要重启数据库】
 ------------------------------- ----------------------- 
| Variable_name                 | Value                 |
 ------------------------------- ----------------------- 
| default_authentication_plugin | caching_sha2_password |
 ------------------------------- ----------------------- 
1 row in set (0.01 sec)

mysql> set global default_authentication_plugin=mysql_native_password;
ERROR 1238 (HY000): Variable default_authentication_plugin is a read only variable

在配置文件中配置如下参数:

default_authentication_plugin=mysql_native_password

【说明:对于之前已经创建的用户,其验证仍然使用的是caching_sha2_password】

alter user dba@% identified with mysql_native_password by 123456;       #更改之前已经验证用户的插件