CentOS7安装MySQL5


本文为实战文章,注重无脑复制也能实现功能。
— 我想偷懒使用docker没想到单独安装我尽然不会。-_-

目录

一、前提须知

我需要好好跟你讲一下笔者用的版本,以防止你跟着我的文章出现问题。因为我几乎把能踩的坑全踩了。呜呜呜呜!当初不应该用docker-compose偷懒的。

  • 服务器版本:CentOS 7.9
  • MySQL版本:5.7.38
  • 不是使用快速安装包

如果您只是为了快速搭建MYSQL 建议查阅快速安装包或者docker,这样可以省很多功夫。

二、安装MySQL

既然做好了准备那么就跟着我的节奏一起安装mysql吧!

2.1、下载需要的tar文件

你可以选择在官网下载你需要的包,或者使用我提供的网盘连接进行下载。笔者使用的版本在之前已经介绍,为5.7.38。如果你使用其他的版本可能会出现一些问题。比如5.7.22,说实话我失败了。

image

2.2、卸载mariadb

这一步按照个人的情况进行,如果你的centos是有的就必须卸载,没有就跳过。
判断是否有mariadb

[root@musiro ~]# rpm -qa|grep mariadb
> mariadb-libs-5.5.68-1.el7.x86_64

如果有就必须删除mariadb,它是centos自带的一个数据库,他会和mysql发生冲突,必须卸载。

rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

2.3、卸载mysql

嗯哼?嗯哼?嗯哼? 对,你的电脑可能确实安装了关于mysql,建议检查一遍,如果安装必须删除。不然报错!报错!报错!!!!!!

先判断是否安装rpm快速包,如果存在就需要删除

rpm -qa | grep mysql
# 删除指令
rpm -e --nodeps <列出的数据> [列出的数据...]

往往这么删除是不够了,还需要查询系统里面关于mysql的文件

[root@musiro ~]# find / -name mysql
> /usr/lib64/mysql
> /etc/selinux/targeted/active/modules/100/mysql
[root@musiro ~]# ls /usr/lib64/mysql
> plugin

如果你通过以上指令出现的结果多了,请通过rm -ef <文件名>删除多出的文件夹,如果你/usr/lib64/mysql文件不仅有plugin也请直接删除。

当前展示的是一个重装的centos原本的输出结果。

2.4、安装几个需要的依赖

依赖说明:

  • gzip:用于第一步解压
  • perl libaio:mysql-server安装需要的依赖
yum install -y gzip perl libaio;

2.5、上传文件并解压文件

笔者将文件上传到/home/mysql/文件夹下,注意mysql的安装根文件的位置毛关系没有。所以放在你习惯的地方即可。

解压文件

gzip mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar;
tar -zxvf mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar.gz

image

2.6、安装rpm文件

一定要注意顺序,顺序不对会报错。

# common libs client server
rpm -ivh mysql-community-common-5.7.38-1.el7.x86_64.rpm mysql-community-libs-5.7.38-1.el7.x86_64.rpm mysql-community-client-5.7.38-1.el7.x86_64.rpm mysql-community-server-5.7.38-1.el7.x86_64.rpm

# 如果出问题你就一个一个安装
rpm -ivh mysql-community-common-5.7.38-1.el7.x86_64.rpm;
rpm -ivh mysql-community-libs-5.7.38-1.el7.x86_64.rpm;
rpm -ivh mysql-community-client-5.7.38-1.el7.x86_64.rpm;
rpm -ivh mysql-community-server-5.7.38-1.el7.x86_64.rpm;

如果安装的8.x版本,安装顺序为:

  1. common
  2. client-plugins
  3. libs
  4. client
  5. icu-data-files
  6. server

2.7、启动mysql

直接启动不要,千万不要玩花里胡哨的,比如初始化,授权等等,如果报错了让你知道什么叫做问题黑洞。

# 第一次启动比较慢,等等就行。如果出错会报错的。
systemctl start mysqld

2.8、连接数据库

第一次启动数据库时会生成一个随机密码,需要到日志里面查看。

[root@musiro ~]# grep "password" /var/log/mysqld.log
>  2022-09-13T12:55:59.387778Z 1 [Note] A temporary password is generated for root@localhost: PkF2MXhRdT%c

此时笔者的密码就出现了PkF2MXhRdT%c。这个时候可以尝试登录数据库

[root@musiro ~]# mysql -uroot -p
Enter password: <PkF2MXhRdT%c 输入你的密码,看不见的。输错了请回车后重新连接,这玩意没有退格键。也许delete可以。>
mysql> 登录进来了

别急,这个时候你需要设置密码才能进行后续的操作。第一次设置密码需要你够长够复杂,不然会报错。
如果出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements说明你的密码太简单了。

# 简单密码 会报错
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql123.';

2.9、修改密码的加密方式

修改访问mysql 的加密方式使有必要的,一是安全,二是远程访问时必须使用指定加密不然不让你访问。首先查看下原本的加密方式

mysql> select host,user,plugin,authentication_string from mysql.user;

image

主要看大框的地方,如果你当前的加密方式为caching_sha2_password必须修改加密方式。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH  mysql_native_password BY '<新的密码>';

2.10、修改简单密码

如果你只是学习的目的使用mysql,不想设置复杂的mysql。OK这一步能够满足你的需求。先查看一下密码设置的要求

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    | 名字检测
| validate_password_dictionary_file    |        | 字典文件
| validate_password_length             | 8      | 长度
| validate_password_mixed_case_count   | 1      | 字母
| validate_password_number_count       | 1      | 数字
| validate_password_policy             | MEDIUM | 难度
| validate_password_special_char_count | 1      | 字符
+--------------------------------------+--------+
- LOW -> 只有长度限制
- MEDIUM -> 除了字典文件其他都限制
- STRONG -> 全部

了解的密码的设定原则这个时候可以根据需求修改密码的格式了。

mysql> set global <validate_password_policy 对应名称> = <LOW值>;
# 修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

2.9、远程连接数据库

远程连接如果需要设置指定IP分文,请在host='指定ip',如果哪里都可以访问(即0.0.0.0)则设置为host='%'

mysql> use mysql
mysql> update user set host='%' where user='root';

建议开启远程访问后输入flush privileges;来设置mysql能够再不重启的状态下执行配置。

等等,别忘了防火墙。云服务器的安全组。

firewall-cmd --zone=public --add-port=3306/tcp --permanent;
systemctl restart firewalld

现在你可以尝试通过远程连接软件连接你的数据库了。
image

注:mysql配置不属于安装篇的内容,即使使用默认配置依然能够启动。所以不讲解配置基础的配置。其实笔者也不想配置了。

膜拜大佬<参考文献>

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/289334.html

(0)
上一篇 2022年9月14日
下一篇 2022年9月14日

相关推荐

发表回复

登录后才能评论