本文为实战文章,注重无脑复制也能实现功能。
— 我想偷懒使用docker没想到单独安装我尽然不会。-_-
目录
一、前提须知
我需要好好跟你讲一下笔者用的版本,以防止你跟着我的文章出现问题。因为我几乎把能踩的坑全踩了。呜呜呜呜!当初不应该用docker-compose偷懒的。
- 服务器版本:CentOS 7.9
- MySQL版本:5.7.38
- 不是使用快速安装包
如果您只是为了快速搭建MYSQL 建议查阅快速安装包或者docker,这样可以省很多功夫。
二、安装MySQL
既然做好了准备那么就跟着我的节奏一起安装mysql吧!
2.1、下载需要的tar文件
你可以选择在官网下载你需要的包,或者使用我提供的网盘连接进行下载。笔者使用的版本在之前已经介绍,为5.7.38。如果你使用其他的版本可能会出现一些问题。比如5.7.22,说实话我失败了。
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
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版本,安装顺序为:
- common
- client-plugins
- libs
- client
- icu-data-files
- 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;
主要看大框的地方,如果你当前的加密方式为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
现在你可以尝试通过远程连接软件连接你的数据库了。
注:mysql配置不属于安装篇的内容,即使使用默认配置依然能够启动。所以不讲解配置基础的配置。其实笔者也不想配置了。
膜拜大佬<参考文献>
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/database/289334.html