Centos stream9 安装 MySQL8 详细步骤(踩坑笔记)

最新 CentOS7 上使用 yum 安装 MySQL8 超详细教程_yum 安装mysql8-CSDN博客

目录

  1. 官网下载安装包
  2. 安装包上传至服务器
  3. 查看文件
  4. 解压 tar 包
  5. 查看解压后结果
  6. 依次安装
  7. 检查是否安装完成
  8. 对mysql 初始化和相关配置
  9. 查看初始密码
  10. 使用初始密码登录
  11. 修改密码
  12. 远程访问权限开放
  13. 修改密码规则
  14. 关闭防火墙

1. 官网下载 MySQL8 安装包

 「Linux 版本 mysql8 源码安装包」,点击链接即可保存。
链接:「Linux 版本 mysql8 源码安装包」

本教程安装版本:mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar

2. 安装包上传至服务器

3. 查看上传文件

进入上传保存的目录 /opt/soft/mysql

[root@zhang services]# cd /opt/soft/mysql/
[root@zhang mysql]# ls
mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar
[root@zhang mysql]# 

4. 解压 mysql-*.tar

rpm -qa | grep mysql 可以查看是否已安装

使用rpm -e --nodeps 文件包名称 可以卸载

[root@localhost mysql]# tar -ivh mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar 
tar: You must specify one of the `-Acdtrux' or `--test-label'  options
Try `tar --help' or `tar --usage' for more information.
[root@localhost mysql]# tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar 
mysql-community-client-8.0.26-1.el7.x86_64.rpm
mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm
mysql-community-common-8.0.26-1.el7.x86_64.rpm
mysql-community-devel-8.0.26-1.el7.x86_64.rpm
mysql-community-embedded-compat-8.0.26-1.el7.x86_64.rpm
mysql-community-libs-8.0.26-1.el7.x86_64.rpm
mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm
mysql-community-server-8.0.26-1.el7.x86_64.rpm

5 .查看解压后结果

[root@localhost mysql]# ll
total 1578672
-rw-r--r--. 1 root root  808273920 Aug  4 14:58 mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar
-rw-r--r--. 1 7155 31415  47836256 Jul  2 02:48 mysql-community-client-8.0.26-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   4694644 Jul  2 02:48 mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415    634632 Jul  2 02:48 mysql-community-common-8.0.26-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   6806272 Jul  2 02:49 mysql-community-devel-8.0.26-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415  23638156 Jul  2 02:49 mysql-community-embedded-compat-8.0.26-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   4243808 Jul  2 02:49 mysql-community-libs-8.0.26-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   1264168 Jul  2 02:49 mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 454689776 Jul  2 02:50 mysql-community-server-8.0.26-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 264457624 Jul  2 02:53 mysql-community-test-8.0.26-1.el7.x86_64.rpm

6. 依次安装

安装注意:

a) 注意安装的文件名,要和上面自己解压出来的文件名保持一致。不要直接复制这里的版本。

b) 注意先选择强制安装:rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm --nodeps --force

c) 按下面的顺序依次安装

[root@localhost mysql]# rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm 
warning: mysql-community-common-8.0.26-1.el7.x86_64.rpm: Header V3 DSA/SHA256 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-common-8.0.26-1.e################################# [100%]
[root@localhost mysql]# rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm  --nodeps --force
warning: mysql-community-libs-8.0.26-1.el7.x86_64.rpm: Header V3 DSA/SHA256 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-libs-8.0.26-1.el7################################# [100%]
[root@localhost mysql]# rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm  --nodeps --force
warning: mysql-community-client-8.0.26-1.el7.x86_64.rpm: Header V3 DSA/SHA256 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-client-8.0.26-1.e################################# [100%]
[root@localhost mysql]# rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm  --nodeps --force
warning: mysql-community-server-8.0.26-1.el7.x86_64.rpm: Header V3 DSA/SHA256 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-server-8.0.26-1.e################################# [100%]

7. 查看是否安装完成

[root@localhost mysql]# rpm -qa | grep mysql
mysql-community-libs-8.0.26-1.el7.x86_64
mysql-community-client-8.0.26-1.el7.x86_64
mysql-community-server-8.0.26-1.el7.x86_64
mysql-community-common-8.0.26-1.el7.x86_64

8. 对 mysql 进行初始化和相关配置

mysqld --initialize;  # 默认执行后,Cento8 和 9 会抛出异常,下面解决
chown mysql:mysql /var/lib/mysql -R;
systemctl start mysqld.service;
systemctl  enable mysqld;

异常信息:

mysqld: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory

抛出异常解决办法

  1. 下载:compat-openssl10-1.0.2o-3.el8.x86_64.rpm
  2. 强制安装
  3. 完成后,继续上一步的初始化即可

注意:在 CentOS8 上安装时,还需要安装compat-openssl10-1.0.2o-3.el8.x86_64.rpm

特别注意:在 Linux 上的mysql8 默认表名是区分大小写的。如果需要修改为不区分,则需要修改配置。

且必须要在初始化之前修改,否则后期修改无效,服务无法启动

vim /etc/my.cnf 编辑文件,最后一行添加:lower_case_table_names=1

9. 查看初始密码

\通过 cat /var/log/mysqld.log | grep password 命令查看数据库的密码**

[root@localhost mysql]# cat /var/log/mysqld.log | grep password
2021-08-04T07:10:39.434745Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: nYNlC2reI=42  

注意:上面的 root@localhost: nYNlC2reI=42 中 ”nYNlC2reI=42 “ 为初始密码

10. 使用初始密码登录

注意:在centos9 上 使用 mysql -uroot -psss 登录时,抛出异常

error while loading shared libraries: libncurses.so.5: cannot open shared object file

解决思路和办法:

使用find 本地搜索不同版本的 libnucurses.so文件

[root@localhost lib64]# find / -name 'libncurses*'
find: ‘/run/user/1000/gvfs’: 权限不够
/usr/lib64/libncurses.so.6
/usr/lib64/libncurses.so.6.2

找到后,进入到上面的 /usr/lib64 目录下,建立虚链

[root@localhost lib64]# ln -sf libncurses.so.6.2 libncurses.so.5
### 上面建立链接,第一个是当前目录存在的,第二个是默认找的需要的

完成后,再次登录mysql ,抛出新的异常信息:

[root@localhost lib64]# mysql -uroot -pss
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
# 找不到 libtinfo.so.5

解决办法:

使用上面相同的思路,find / -name 'libtinkinfo*'

但是其实都在 lib64 目录下,

直接再次建立虚链

[root@localhost lib64]# ln -sf libtinfo.so.6.2 libtinfo.so.5

再次登录,成功!

如果密码中防止有特殊字符,可以加单引号

[root@localhost mysql]# mysql -uroot -p'nYNlC2reI=42'  ### centos9 抛异常
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 8
Server version: 8.0.26

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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> 

显示上面结果,表示登录成功,就可以操作 mysql 了。

注意:如果初始密码存在一些特殊字符时,可能导致登录失败,可以使用下面登录方式。输入密码的方式。

[root@localhost zones]# mysql -uroot -p
Enter password: 

11. 修改密码

为了后面登录方便,还需要修改为自己容易记住的密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'
    -> ;
Query OK, 0 rows affected (0.01 sec)

修改后,可以直接使用新密码登录尝试。

12. 远程访问权限

注意:下面的执行是在mysql 登录状态下执行的命令

create user 'root'@'%' identified with mysql_native_password by 'root';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;

实际操作如下:

mysql> create user 'root'@'%' identified with mysql_native_password by 'root';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all privileges on *.* to 'root'@'%' with grant option;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

注意最后刷新权限。

13. 修改密码规则

通过 ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER; 命令修改加密规则,MySql8.0 版本 和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式。

修改密码永不过期

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

14. 关闭防火墙

在没关防火墙前,使用客户端访问测试如下:

上面爆出 2002 错误。原因:找不到服务(一般IP或端口错误导致的)。我们这里是因为防火墙拦截,没有开放3306端口导致的。

接下来,尝试关闭防火墙,然后再测试:

[root@localhost mysql]# systemctl stop firewalld

  

提示了 1130 错误, 原因是,默认mysql 不支持远程的访问的。需要修改权限,运行其他站点远程访问。

create user 'root'@'%' identified with mysql_native_password by 'root';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;

关闭防火墙,测试下mysql 是否支持了远程访问

[root@localhost mysql]# systemctl stop firewalld

15. 使用客户端访问

比如SQLyong客户端:

注意上面的 Host Address 填入自己 CentOS的 IP 地址。如果访问通过,表示 mysql 安装配置完成!

16. 开启防火墙

再次关闭防火墙,重复上面的客户端访问测试,

[root@localhost mysql]# systemctl start firewalld

会出现下面错误,原因就是无法访问3306端口导致

17. 开放端口

[root@localhost mysql]# firewall-cmd --zone=public --permanent --add-port=3306/tcp
success
[root@localhost mysql]# systemctl restart firewalld # 重启防火墙,让开放端口生效
#### 也可以使用下面的命令,重新加载端口修改 # systemctl firewall-cmd --reload

添加成功后,可以在 /etc/firewalld/zones/public.xml 中查看

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <port protocol="tcp" port="3306"/>
</zone>

重新访问,连接成功!

 到此为止,所有安装、配置、权限、端口、客户端访问等问题全部搞定!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zp8126

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值