以前写了MySQL5.x版本的教程,但是还没写过MySQL8.x的教程,那么今天就来写一写。
本教程主要用于CentOS7操作系统如何安装MySQL8数据库。
1.查看操作系统glibc版本
$ rpm -qa|grep glibc
glibc-devel-2.17-307.el7.1.x86_64
glibc-common-2.17-307.el7.1.x86_64
glibc-headers-2.17-307.el7.1.x86_64
glibc-2.17-307.el7.1.x86_64
2.下载对应的二进制MySQL版本
官网下载地址:https://dev.mysql.com/downloads/mysql/
这里下载的是二进制包,如果需要源码包编译,可以选择源码包。由于机器的glibc是2.17版本,所以下载相应的压缩包。
- Select Operating System: Linux - Generic
- Select OS Version: ALL
- 这里我选择了
Linux - Generic (glibc 2.17) (x86, 64-bit), Compressed TAR Archive
$ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild.tar
如果官网下载慢,可以使用这给地址,这个镜像源列表会更新最新版本。
http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-8.0/
比如:
http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-8.0/mysql-8.0.27-linux-glibc2.17-x86_64-minimal.tar.xz
3.解压部署
居然解压嵌套,那就一步步来吧。
$ tar xf mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild.tar
$ mkdir mysql
$ mv mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild.tar.xz mysql
$ cd mysql
$ xz -d mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild.tar.xz
$ tar xf mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild.tar
移动到想要部署的目录,这里目标目录的父目录确保存在。
$ mv mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild ~/3rd/mysql8
4.配置环境
4.1 创建目录
创建一个存储数据和日志文件的目录
$ cd ~/3rd/mysql8
$ mkdir data
$ mkdir log
4.2 创建一个配置文件
$ vim bin/my.cnf
[mysqld]
datadir=/home/testerzhang/3rd/mysql8/data
basedir=/home/testerzhang/3rd/mysql8
socket=/home/testerzhang/3rd/mysql8/bin/mysql.sock
user=testerzhang
port=3306
character-set-server=utf8mb4
collation-server = utf8mb4_general_ci
mysqlx=0
# 禁止主机名解析
# skip_name_resolve=on
#跳过密码验证,忘记密码 可以设置,然后修改密码,再关闭
#skip-grant-tables
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[client]
port=3306
socket=/home/testerzhang/3rd/mysql8/bin/client.pid
default-character-set = utf8mb4
[mysqld_safe]
log-error=/home/testerzhang/3rd/mysql8/log/mysqld.log
pid-file=/home/testerzhang/3rd/mysql8/bin/mysqld.pid
4.3 初始化数据库
$ ./bin/mysqld --initialize-insecure --user=testerzhang --basedir=/home/testerzhang/3rd/mysql8 --datadir=/home/testerzhang/3rd/mysql8/data
这里使用--initialize-insecure
参数是代表生成空密码口令。
4.4 配置环境变量并生效
配置环境变量,加入MySQL的PATH
路径和LD_LIBRARY_PATH
路径
$ vim ~/.bash_profile
export MYSQL_HOME=$HOME/3rd/mysql8
export PATH=$MYSQL_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MYSQL_HOME/lib:$LD_LIBRARY_PATH
生效环境变量
$ source ~/.bash_profile
4.5 写个启动脚本启动
$ cd ~/3rd/mysql8/bin
$ vim startmysql.sh
./mysqld_safe --defaults-file=./my.cnf --mysqlx=0 &
$ sh -x startmysql.sh
4.6 修改root密码
$ mysql -h127.0.0.1 -P3306 -uroot -p
mysql> use mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Testerzhang';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
然后使用新的密码再次连接,如果可以连接,证明修改密码没问题。
4.7 创建普通用户
MySQL8有新的安全要求,不能像之前的版本那样一次性创建用户并授权需要先创建用户,再进行授权操作
mysql> CREATE USER 'test'@'%' IDENTIFIED BY 'testerzhang';
赋予权限:
下面例子意思是:test用户可以任意主机访问,同时可以访问test数据库下。
mysql> GRANT ALL PRIVILEGES ON test.* TO 'test'@'%' WITH GRANT OPTION;
mysql> flush privileges;
5. 老mysql客户端连接数据库
# mysql -V
mysql Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1
# mysql -h10.3.3.16 -P3306 -utest -ptesterzhang
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
两种方法:
- 升级客户端
- 修改服务端为旧模式。
这里推荐升级客户端,以下是教程。
5.1 添加yum源
# vim /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
5.2 安装或更新
- 如果没安装过
# yum install mariadb*
- 如果已安装,想升级
# yum upgrade mariadb*
安装后,查看mysql客户端版本
# mysql -V
mysql Ver 15.1 Distrib 10.2.40-MariaDB, for Linux (x86_64) using readline 5.1
5.2 再次测试连接
# mysql -h10.3.3.16 -P3306 -utest -ptesterzhang
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.26 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
成功连接。
本文没有授权给任何组织、企业和个人转载,未经作者允许禁止转载!
欢迎关注我的公众号testerzhang,原创技术文章第一时间推送。