Linux MySQL-v8.0.30的安装与配置

MySQL-v8.0.30的安装与配置

官网下载地址

我使用的 MySQL-v8.0.30-minimal版本,下载传至服务器,或者使用 wget 命令直接下载到服务器上。

1. 拷贝、解压、做全局软链

$ cp mysql-8.0.30-linux-glibc2.17-x86_64-minimal /usr/local/
$ cd /usr/local/
$ tar -xvf mysql-8.0.30-linux-glibc2.17-x86_64-minimal

# 重命名一下
$ mv mysql-8.0.30-linux-glibc2.17-x86_64-minimal mysql

# 软链
$ ln -s /usr/local/mysql/bin/mysql /usr/bin 

2. 创建mysql专属用户组和目录

$ groupadd mysql
$ useradd -g mysql mysql

# 查看是否创建并指定组成功
$ id mysql
uid=1003(mysql) gid=1004(mysql)=1004(mysql)

# 创建mysql专属目录。-p是连级创建目录
$ mkdir -p /data/mysql

# 刚创建后查看目录所属者是root
$ ll /data
总用量 4
drwxr-xr-x 2 root root 4096 820 12:56 mysql

# 使用chown命令更改文件所属用户为mysql
# 格式:chown ownn:group [-R] 文件或目录
$ chown mysql:mysql -R /data/mysql
$ ll /data
总用量 4
drwxr-xr-x 2 mysql mysql 4096 820 12:56 mysql

在这里插入图片描述

3. 数据库配置

编辑文件 /etc/my.cnf,如果文件不存在vim命令会自己创建

$ vim /etc/my.cnf

下面是 my.cnf 完整的配置,按需修改

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
# 数据库存放目录
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
lower_case_table_names=1

# character config
character_set_server=utf8
symbolic-links=0
explicit_defaults_for_timestamp=true
# 如果需要设置简易密码,就关闭验证
validate_password=OFF

4. MySQL启动

# 初始化数据库
$ cd /usr/local/mysql/bin
$ ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

# 设置开机启动
$ cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
# 启动
$ service mysql start 

在这里插入图片描述

5. 用户登录及设置

  • 查看初始密码,记下来,登录数据库的时候要输入
$ grep 'temporary password' /data/mysql/mysql.err

在这里插入图片描述

# 登录用户
$ mysql -u root -p

# 我这里遇到了两个错误,是启动mysql时缺失两个so库,做一下软链接就好
报错1:
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

报错2:
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

# 如果本地没有6的版本就使用yum安装,有就直接软链
$ ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
$ ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5

登录成功
在这里插入图片描述

  • 登录数据库成功后,修改密码

任何数据库命令操作一定要用分号结尾,且涉及到设置修改的需要 flush privileges;

mysql-> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxx';
mysql> flush privileges;

(此时 root 的 host 还是 localhost)

  • 允许远程连接

没有设置远程连接的话,Navicat连接时会报如下错误:
在这里插入图片描述

所以需要修改,执行以下命令:

mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;

一定要先执行 use mysql;,否则就会收获如下错误:
在这里插入图片描述
(更新后的 root 的 host 变成了 %,所以后续修改root密码需要用 %)

Tips:最后访问时记得在云服务器控制台里,开放对应端口,否则 Navicat 还是连接不上


题外话:

mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
# 更改加密方式
mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVEER;

# 更新用户密码
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
mysql> flush privileges;

另外注意,我在修改密码时遇到一个错误:
问题出在刚才设置的允许远程连接的sql,root 的 host 已经从 localhost 改成了 %

mysql> alter user 'root'@'localhost' identified by '新密码';
报错:ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

# 查看 user 表里的 user和host字段

mysql> select user,host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)

# 因此需要使用正确的host
mysql> ALTER USER 'root'@'%' IDENTIFIED BY '12345678';
mysql> flush privileges;

猜你喜欢

转载自blog.csdn.net/qq_39420519/article/details/126456479