GreatSQL社区

搜索

KAiTO

0基础学MySQL数据库—从小白到大牛(18)Linux下MySQL的安装与使用

KAiTO 已有 375 次阅读2022-10-18 09:16 |个人分类:零基础学习数据库|系统分类:其他

进阶学习在Liunx安装MySQL

安装并启动好两台虚拟机: CentOS 7
掌握克隆虚拟机的操作
mac地址

主机名

  • vim /etc/hostname
  • 在这里插入图片描述
  • 修改i,退出Esc,然后:wq,表示保存并退出
  • 在这里插入图片描述
  • 修改完需要重启主机
  • reboot

ip地址和UUID

  • vim /etc/sysconfig/network-scripts/ifcfg-ens33
  • 在这里插入图片描述
  • 修改完需要网络重启 systemctl restart network

远程连接有 Xshell 和 Xftp 等访问CentOS系统的工具

通常要上传安装的软件放在opt文件夹下

CentOS6和CentOS7在MySQL的使用中的区别

  • 防火墙:6是iptables,7是firewalld
  • 启动服务的命令:6是service,7是systemctl

1.卸载MySQL

查看是否有MySQL

查看MySQL版本

mysqladmin --version```sql如果你是用rpm安装, 检查一下RPM PACKAGE:```sqlrpm -qa | grep -i mysql # -i 忽略大小写不存在mysql-lib的版本:root@zzz-Latitude-3410:/# rpm -qa | grep -i mysqlroot@zzz-Latitude-3410:/# 

开始卸载

关闭服务

systemctl stop mysqld.service

查看当前 mysql 安装状况

rpm -qa | grep -i mysql # 或 yum list installed | grep mysql

卸载上述命令查询出的已安装程序

yum remove mysql-xxx mysql-xxx mysql-xxx mysqk-xxxx

务必卸载干净,反复执行rpm -qa | grep -i mysql确认是否有卸载残留

删除 mysql 相关文件

  • 查找相关文件
find / -name mysql
  • 删除上述命令查找出的相关文件
find /  -name "msyql" -exec rm -rf {} \;
  • 删除 my.cnf
rm -rf /etc/my.cnf

2.安装MySQL

MySQL的4大版本

MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户。 MySQL Enterprise Edition 企业版本,需付费,不能在线下载,可以试用30天。提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户。 MySQL Cluster 集群版,开源免费。用于架设集群服务器,可将几个MySQL Server封装成一个Server。需要在社区版或企业版的基础上使用。 MySQL Cluster CGE 高级集群版,需付费。

此外,官方还提供了 MySQL Workbench (GUITOOL)一款专为MySQL设计的 ER/数据库建模工具它是著名的数据库设计工具DBDesigner4的继任者。MySQLWorkbench又分为两个版本,分别是 社区版 (MySQL Workbench OSS)、 商用版 (MySQL WorkbenchSE)。

下载MySQL指定版本

下载地址
官网:https://www.mysql.com在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在General Availability(GA) Releases中选择适合的版本

Linux系统下安装MySQL的几种方式

Linux系统下安装软件的常用三种方式:

方式1:rpm命令

使用rpm命令安装扩展名为".rpm"的软件包。

.rpm包的一般格式:
在这里插入图片描述

方式2:yum命令

需联网,从互联网获取的yum源,直接使用yum命令安装。

Cetnos7 配置yum源阿里云源

备份,将 CentOS-Base.repo 为CentOS-Base.repo.backup

[root@localhost ~]$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载新的 http://mirrors.aliyun.com/repo/Centos-7.repo,并命名为CentOS-Base.repo

[root@localhost ~]$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo         或者[root@localhost ~]$ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清除缓存

[root@localhost ~]$ yum clean all     # 清除系统所有的yum缓存[root@localhost ~]$ yum makecache     # 生成yum缓存
安装开始
用yum安装MySQL8版本

准备工作

1.查看是否有安装过mysql

rpm -qa | grep -i mysql

2.删除mysql

yum -y remove MySQL-*

3.把所有出现的目录统统删除

find / -name mysql

4.删除配置文件

rm -rf /etc/my.cnf

5.删除mysql的默认密码

rm -rf /root/.mysql_sercret

1.配置Mysql 8.0安装源

sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

2.安装Mysql 8.0

sudo yum --enablerepo=mysql80-community install mysql-community-server

提示下载插件选择:y。

如果报错GDK,在yum install 版本后面加上 --nogpgcheck,即可绕过GPG验证成功安装。

sudo yum --enablerepo=mysql80-community install mysql-community-server --nogpgcheck

启动mysql服务

sudo service mysqld start
在这里插入图片描述

查看mysql服务运行状态

service mysqld status
<img src="https://img-blog.csdnimg.cn/c927acddfa0942c8ba667c90065a0616.png" alt="在这里插入图片描述" data-href="" style=""/>
在这里插入图片描述

查看root临时密码
安装完mysql之后,会生成一个临时的密码让root用户登录。

grep "A temporary password" /var/log/mysqld.log

在这里插入图片描述
登录mysql

mysql -uroot -p

注意,登录完先改密码注意,登录完先改密码注意,登录完先改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

会提示:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements(密码不符合当前策略)
方案1: 设置符合策略的密码(大小写字母+数据+符号)
方案2:密码策略改简单一点
方案2设置方式:
先更改密码,否则无法下一步操作

输入:ALTER USER 'root'@'localhost' IDENTIFIED BY '83mJt20R#u_k';

validate_password.length 是密码的最小长度,默认是8,我们把它改成4

输入:set global validate_password.length=4;

validate_password.policy 验证密码的复杂程度,我们把它改成0

输入:set global validate_password.policy=0;

validate_password.check_user_name 用户名检查,用户名和密码不能相同,我们也把它关掉

输入:set global validate_password.check_user_name=off;

再执行修改密码的命令

输入:ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

密码设置成功,设为了root。

方式3:编译安装源码包

针对 tar.gz 这样的压缩格式,要用tar命令来解压;如果是其它压缩格式,就使用其它命令。

安装方式汇总及评价


安装方式特点
rpm安装简单,灵活性差,无法灵活选择版本、升级
rpm repository安装包极小,版本安装简单灵活,升级方便,需要联网安装
通用二进制包安装比较复杂,灵活性高,平台通用性好
源码包安装最复杂,时间长,参数设置灵活,性能好

在Ubuntu安装

下载MySQL APT安装配置包
访问https://dev.mysql.com/downloads/repo/apt/获取下载地址
![在这里插入图片描述](https://img-blog.csdnimg.cn/6fff390fa1d64eff8b35ff679087e25d.png#pic_center在这里插入图片描述在这里插入图片描述
然后进入Ubuntu系统,打开终端,并输入以下命令,进行下载MySQL APT配置包

wget https://dev.mysql.com/get/mysql-apt-config_0.8.14-1_all.deb

安装MySQL APT配置包

输入以下命令,进行安装:

sudo dpkg -i mysql-apt-config_0.8.14-1_all.deb

安装MySQL Server

更新APT软件源:

sudo apt-get update

安装MySQL Server

sudo apt-get install mysql-server

输入 y 继续执行,弹出MySQL 8安装对话框,按回车键确定,进入设置root密码的对话框

下载速度可能有点慢请耐心等待,可以尝试更换APT数据源,国内的镜像网站有很多,比如阿里云、清华大学镜像等等,至于如何更换,请自行百度。

设置 root 用户密码,这里密码暂时设为 123

TAB+回车确定

MySQL 8安装好之后,会创建如下目录:

数据库目录:/var/lib/mysql/。 配置文件:/usr/share/mysql-8.0(命令及配置文件),/etc/mysql(如my.cnf)。 相关命令:/usr/bin(mysqladmin、mysqldump等命令)和/usr/sbin。 启动脚本:/etc/init.d/mysql(启动脚本文件mysql的目录)。

启动MySQL服务

通过以上的APT方式安装好之后,所有的服务、环境变量都会启动和配置好,无须手动配置。
服务器启动后端口查询

sudo netstat -anp | grep mysql

查看服务状态

sudo service mysql status

停止服务

sudo service mysql stop

启动服务

sudo service mysql start

重启服务

sudo service mysql restart

查看MySQL服务是否自启动

查看是否自启

systemctl list-unit-files|grep mysqld.service

默认是 enabled
设置开机自启

systemctl enable mysqld.service

关闭开机自启

systemctl disable mysqld.service

登录MySQL数据库

mysql -u root -p

卸载命令

需要完全清理MySQL时,可以完全卸载。

sudo apt purge mysql-*sudo rm -rf /etc/mysql/ /var/lib/mysqlsudo apt autoremovesudo apt autoclean

修改MySQL密码

先输入:flush privileges;
再输入:ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql';
其中mysql为密码

3.MySQL登录

通过mysql -hlocalhost -P3306 -uroot -p进行登录,在Enter password:录入初始化密码

接着修改密码
因为初始化密码默认是过期的,所以查看数据库会报错

修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
5.7版本之后(不含5.7),mysql加入了全新的密码安全机制。设置新密码太简单会报错。

关闭防火墙

#查看防火墙状态
systemctl status firewalld.service

#关闭防火墙
systemctl stop firewalld.service

#设置开机启用防火墙
systemctl enable firewalld.service

#设置开机禁用防火墙
systemctl disable firewalld.service

Linux下修改配置

use mysql; select Host,User from user; mysql> select Host,User from user; +-----------+---------------+| Host      | User          |+-----------+---------------+| localhost | mysql.session || localhost | mysql.sys     || localhost | root          |+-----------+---------------+4 rows in set (0.00 sec)

可以看到root用户的当前主机配置信息为localhost

修改Host为通配符%

Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1。这里的意思就是说root用户只能通过192.168.1.1的客户端去访问。 user=root Host=localhost,表示只能通过本机客户端去访问。而 %是个通配符 如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果 Host=% ,表示所有IP都有连接权限

update user set host = '%' where user ='root';update user set host = '192.168.1.%' where user ='root';

Host设置了“%”后便可以允许远程访问。

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

执行成功以后要刷新权限

flush privileges;

4.MySQL8的密码强度评估

4.1 MySQL不同版本设置密码

MySQL5.7中:成功

mysql> alter user 'root' identified by 'abcd1234'; Query OK, 0 rows affected (0.00 sec) 

MySQL8.0中:失败

mysql> alter user 'root' identified by 'abcd1234'; # HelloWorld_123 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

在MySQL 8.0之前,MySQL使用的是validate_password插件检测、验证账号密码强度,保障账号的安全性。
安装/启用插件方式1:在参数文件my.cnf中添加参数

cat /etc/my.cnf[mysqld] plugin-load-add=validate_password.so #ON/OFF/FORCE/FORCE_PLUS_PERMANENT: 是否使用该插件(及强制/永久强制使用) validate-password=FORCE_PLUS_PERMANENT
说明1: plugin library中的validate_password文件名的后缀名根据平台不同有所差异。 对于Unix和 Unix-like系统而言,它的文件后缀名是.so,对于Windows系统而言,它的文件后缀名是.dll。 说明2: 修改参数后必须重启MySQL服务才能生效。 说明3: 参数FORCE_PLUS_PERMANENT是为了防止插件在MySQL运行时的时候被卸载。当你卸载插件时就会报错。如下所示。
mysql> SELECT PLUGIN_NAME, PLUGIN_LIBRARY, PLUGIN_STATUS, LOAD_OPTION FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'validate_password';+-------------------+----------------------+---------------+----------------------+| PLUGIN_NAME       | PLUGIN_LIBRARY       | PLUGIN_STATUS | LOAD_OPTION          | +-------------------+----------------------+---------------+----------------------+| validate_password | validate_password.so | ACTIVE        | FORCE_PLUS_PERMANENT |+-------------------+----------------------+---------------+----------------------+1 row in set (0.00 sec)mysql> UNINSTALL PLUGIN validate_password; ERROR 1702 (HY000): Plugin 'validate_password' is force_plus_permanent and can not be unloaded

安装/启用插件方式2:运行时命令安装(推荐)

mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';Query OK, 0 rows affected, 1 warning (0.11 sec)

4.2 MySQL不同版本设置密码MySQL8的安全策略

  1. validate_password说明 MySQL 8.0,引入了服务器组件(Components)这个特性,validate_password插件已用服务器组件重新实现。8.0.25版本的数据库中,默认自动安装validate_password组件。

未安装插件前,执行如下两个指令 ,执行效果:

mysql> show variables like 'validate_password%'; Empty set (0.04 sec) mysql> SELECT * FROM mysql.component; ERROR 1146 (42S02): Table 'mysql.component' doesn't exist 

安装插件后,执行如下两个指令 ,执行效果:

mysql> SELECT * FROM mysql.component; +--------------+--------------------+------------------------------------+| component_id | component_group_id | component_urn                      | +--------------+--------------------+------------------------------------+| 1            | 1                  | file://component_validate_password | +--------------+--------------------+------------------------------------+1 row in set (0.00 sec) mysql> show variables like 'validate_password%'; +--------------------------------------+--------+| Variable_name                        | Value  | +--------------------------------------+--------+| validate_password.check_user_name    | ON     | | 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      | +--------------------------------------+--------+7 rows in set (0.01 sec)

关于 validate_password 组件对应的系统变量说明:


选项默认值参数描述
validate_password_check_user_nameON设置为ON的时候表示能将密码设置成当前用户名。
validate_password_dictionary_file用于检查密码的字典文件的路径名,默认为空
**validate_password_length **8密码的最小长度,也就是说密码长度必须大于或等于8
validate_password_mixed_case_count1如果密码策略是中等或更强的,validate_password要求密码具有的小写和大写字符的最小数量。
validate_password_number_count1密码必须包含的数字个数
validate_password_policyMEDIUM密码强度检验等级,可以使用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定。
validate_password_special_char_count1密码必须包含的特殊字符个数
组件和插件的默认值可能有所不同。例如,MySQL 5.7. validate_password_check_user_name的默认值为OFF。

修改安全策略

SET GLOBAL validate_password_policy=LOW; SET GLOBAL validate_password_policy=MEDIUM; SET GLOBAL validate_password_policy=STRONG; SET GLOBAL validate_password_policy=0; # For LOW SET GLOBAL validate_password_policy=1; # For MEDIUM SET GLOBAL validate_password_policy=2; # For HIGH #注意,如果是插件的话,SQL为set global validate_password_policy=LOW 

此外,还可以修改密码中字符的长度

set global validate_password_length=1;

4.3密码强度测试

如果你创建密码是遇到“Your password does not satisfy the current policy requirements”,可以通过函数组件去检测密码是否满足条件: 0-100。当评估在100时就是说明使用上了最基本的规则:大写+小写+特殊字符+数字组成的8位以上密码

mysql> SELECT VALIDATE_PASSWORD_STRENGTH('medium'); +--------------------------------------+| VALIDATE_PASSWORD_STRENGTH('medium') | +--------------------------------------+|                                   25 | +--------------------------------------+1 row in set (0.00 sec)mysql> SELECT VALIDATE_PASSWORD_STRENGTH('K354*45jKd5'); +-------------------------------------------+| VALIDATE_PASSWORD_STRENGTH('K354*45jKd5') | +-------------------------------------------+|                                       100 | +-------------------------------------------+1 row in set (0.00 sec) 

注意:如果没有安装validate_password组件或插件的话,那么这个函数永远都返回0。 关于密码复杂度对应的密码复杂度策略。如下表格所示:


Password TestReturn Value
Length < 40
Length ≥ 4 and < validate_password.length25
Satisfies policy 1 (LOW)50
Satisfies policy 2 (MEDIUM)75
Satisfies policy 3 (STRONG)100

4.4 卸载插件、组件

卸载插件

mysql> UNINSTALL PLUGIN validate_password; Query OK, 0 rows affected, 1 warning (0.01 sec) 

卸载组件

mysql> UNINSTALL COMPONENT 'file://component_validate_password'; Query OK, 0 rows affected (0.02 sec)


评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-4-24 20:21 , Processed in 0.013243 second(s), 8 queries , Redis On.
返回顶部