msyql8.0.30安装和使用

mysql8.0.30安装(centos7.8)

下载rpm安装包

注意:本教程是在新建虚拟机上安装,不涉及卸载,如需卸载请自行百度
地址:mysql8.0.30-rpm包地址
直接下载 bundel版本如下图所示:
在这里插入图片描述

解压bundle安装包

tar -xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar

安装下图中选中的6 个rpm包
在这里插入图片描述

安装前检查

rpm -qa|grep libaio
yum install net-tools
rpm -qa|grep net-tools
yum remove mysql-libs  // 删除系统带的msql库文件,否则安装时或报错

在这里插入图片描述

rpm安装mysql 8.0.30

安装时必须按照以下顺序安装

rpm -ivh mysql-community-common-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.30-1.el7.x86_64.rpm

查看mysql版本信息

mysql --version 
mysqladmin --version

在这里插入图片描述

mysql操作命令

systemctl start mysqld
systemctl stop mysqld
systemctl enable mysqld   //设置开机自启动
systemctl disable mysqld   
systemctl status mysqld
systemctl list-unit-files|grep mysqld.service  // 查看是否开机启动命令

查看临时登录密码

cat /var/log/mysqld.log |grep password

在这里插入图片描述
初始密码为: iAoo.oa<q65_

使用初始密码登录mysql,默认用户名是 root

mysql -uroot -p

在这里插入图片描述
此时表示mysql安装成功可以进行登录

修改密码

注意: 密码至少12位,包含大小写字母、特殊符号这三种可设置成功

alter user 'root'@'localhost' identified by '123_qwerQWER';

在这里插入图片描述
exit 命令退出mysql, 使用新密码重新登录mysql

设置远程登录

准备工作

Mysql配置了不支持远程连接,只能通过本地登录

执行如下命令关闭防火墙

systemctl start firewalld.service
systemctl status firewalld.service
systemctl stop firewalld.service
#设置开机启用防火墙
systemctl enable firewalld.service
#设置开机禁用防火墙
systemctl disable firewalld.service

或者

firewall-cmd --list-all   #查看开放的端口号
firewall-cmd --add-service=http --permanent  #设置开放的端口号
firewall-cmd --add-port=3306/tcp --permanent #设置开放的端口号
firewall-cmd --reload  #重启防火墙

修改配置

查看命令如下:

use mysql;
select Host,User from user;
#或者
select host, user from user;

在这里插入图片描述
说明: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都有连接权限。
注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产
环境的IP进行设置。

修改命令如下:

update user set host = '%' where user ='root';
flush privileges;    // Host修改完成后记得执行flush privileges使配置立即生效:

结果如下图所示:
在这里插入图片描述

测试远程连接

本例中使用sqlyog 进行测试
在这里插入图片描述

查看密码校验规则

show variables like 'validate_password%';

在这里插入图片描述
说明如下:
在这里插入图片描述

修改密码校验规则

最低为4 , 如果设置值小于4, 默认是4, 修改其他默认值类似此操作

set global validate_password.length=12;

在这里插入图片描述

修改完规则之后 需要满足此规则才可以进行修改密码,否则报错

mysql字符集查看

在MySQL 8.0版本之前,默认字符集为 latin1 ,utf8字符集指向的是 utf8mb3 。网站开发人员在数据库
设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL8.0开始,数据库的默认编码将改为 utf8mb4 ,从而避免上述乱码的问题。

show variables like 'character%';
# 或者
show variables like '%char%';

在这里插入图片描述
说明如下:

  • character_set_server:服务器级别的字符集

  • character_set_database:当前数据库的字符集

  • character_set_client:服务器解码请求时使用的字符集

  • character_set_connection:服务器处理请求时会把请求字符串从character_set_client转为- -character_set_connection设置的字符集

  • character_set_results:服务器向客户端返回数据时使用的字符集

utf8 字符集表示一个字符需要使用1~4个字节,但是我们常用的一些字符使用1~3个字节就可以表示
了。而字符集表示一个字符所用的最大字节长度,在某些方面会影响系统的存储和性能,所以设计
MySQL的设计者偷偷的定义了两个概念:

  • utf8mb3 :阉割过的 utf8 字符集,只使用1~3个字节表示字符。
  • utf8mb4 :正宗的 utf8 字符集,使用1~4个字节表示字符。

查看大小写敏感命令

show variables like '%lower_case_table%';

在这里插入图片描述

  • 默认为0,大小写敏感 。
  • 设置1,大小写不敏感。创建的表,数据库都是以小写形式存放在磁盘上,对于sql语句都是转
    换为小写对表和数据库进行查找。
  • 设置2,创建的表和数据库依据语句上格式存放,凡是查找都是转换为小写进行。

一般使用默认值即可。如需修改:

  • 1、停止MySQL服务
  • 2、删除数据目录,即删除 /var/lib/mysql 目录
  • 3、在MySQL配置文件( /etc/my.cnf )中添加 lower_case_table_names=1
  • 4、启动MySQL服务

sql_mode模式

  • 宽松模式:
    如果设置的是宽松模式,那么我们在插入数据的时候,即便是给了一个错误的数据,也可能会被接受,
    并且不报错。
    举例 :我在创建一个表时,该表中有一个字段为name,给name设置的字段类型时 char(10) ,如果我
    在插入数据的时候,其中name这个字段对应的有一条数据的 长度超过了10 ,例如’1234567890abc’,超
    过了设定的字段长度10,那么不会报错,并且取前10个字符存上,也就是说你这个数据被存为了’1234567890’,而’abc’就没有了。但是,我们给的这条数据是错误的,因为超过了字段长度,但是并没有报错,并且mysql自行处理并接受了,这就是宽松模式的效果。
    应用场景 :通过设置sql mode为宽松模式,来保证大多数sql符合标准的sql语法,这样应用在不同数据
    库之间进行 迁移 时,则不需要对业务sql 进行较大的修改。

  • 严格模式:
    出现上面宽松模式的错误,应该报错才对,所以MySQL5.7版本就将sql_mode默认值改为了严格模式。所以在 生产等环境 中,我们必须采用的是严格模式,进而 开发、测试环境 的数据库也必须要设置,这样在开发测试阶段就可以发现问题。并且我们即便是用的MySQL5.6,也应该自行将其改为严格模式。
    开发经验 : MySQL等数据库总想把关于数据的所有操作都自己包揽下来,包括数据的校验,其实开发中,我们应该在自己 开发的项目程序级别将这些校验给做了 ,虽然写项目的时候麻烦了一些步骤,但是这样做之后,我们在进行数据库迁移或者在项目的迁移时,就会方便很多。

  • 改为严格模式后可能会存在的问题:
    1、停止MySQL服务
    2、删除数据目录,即删除 /var/lib/mysql 目录
    3、在MySQL配置文件( /etc/my.cnf )中添加 lower_case_table_names=1
    4、启动MySQL服务
    若设置模式中包含了 NO_ZERO_DATE ,那么MySQL数据库不允许插入零日期,插入零日期会抛出错误而不是警告。例如,表中含字段TIMESTAMP列(如果未声明为NULL或显示DEFAULT子句)将自动分配DEFAULT ‘0000-00-00 00:00:00’(零时间戳),这显然是不满足sql_mode中的NO_ZERO_DATE而报错。

查看sql_mode模式

select @@session.sql_mode;
select @@global.sql_mode;
#或者
show variables like 'sql_mode';
#或者
select @@session.sql_mode\G
select @@global.sql_mode\G
  • 永久修改-- 8.0默认严格模式,不做修改,如需修改,参考下图:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值