最新 CentOS7 上使用 yum 安装 MySQL8 超详细教程_yum 安装mysql8-CSDN博客
目录
- 官网下载安装包
- 安装包上传至服务器
- 查看文件
- 解压 tar 包
- 查看解压后结果
- 依次安装
- 检查是否安装完成
- 对mysql 初始化和相关配置
- 查看初始密码
- 使用初始密码登录
- 修改密码
- 远程访问权限开放
- 修改密码规则
- 关闭防火墙
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
抛出异常解决办法:
- 下载:compat-openssl10-1.0.2o-3.el8.x86_64.rpm
- 强制安装
- 完成后,继续上一步的初始化即可
注意:在 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>
重新访问,连接成功!
到此为止,所有安装、配置、权限、端口、客户端访问等问题全部搞定!