mysql 8服务器实验

一、Mysql 8学习

一、准备工作

注意:如不执行下图操作,会访问异常,配置永久关闭需重启系统生效,此次实验建议都关闭。(生产环境中,不建议永久关闭,永久关闭会导致系统安全风险)

getenforce #检查selinux状态

"enforcing"(强制模式)、"permissive"(宽容模式)还是"disabled"(禁用状态)

setenforce 0 #临时关闭,有时候不生效

sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config \\关闭访问限制

cat /etc/selinux/conifg

....................................................

SELINUX=disabled #永久关闭,需重启系统

......................................................

reboot #重启系统

二、安装mysql

1、把mysql包上传至服务器目录里,并进入目录

cd /data/download

2、删掉系统自带的mysql库,否则会和mysql8要安装的lib冲突

yum remove -y mysql-libs

3、 把文件上传到这个目录里,再用下面的语句解压

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

4、安装(全局的依赖common,必须第一个装)

rpm -ivh mysql-community-common-8.0.33-1.el7.x86_64.rpm

5、安装(安装lib的依赖)

rpm -ivh mysql-community-icu-data-files-8.0.33-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-plugins-8.0.33-1.el7.x86_64.rpm

6、安装lib(client 和 server 都依赖它)

rpm -ivh mysql-community-libs-8.0.33-1.el7.x86_64.rpm

7、安装mysql的客户端

rpm -ivh mysql-community-client-8.0.33-1.el7.x86_64.rpm

8、安装服务端(必须先客户端后服务端)

rpm -ivh mysql-community-server-8.0.33-1.el7.x86_64.rpm

9、 启动服务(在启动的时候会产生默认的root密码)

systemctl start mysqld.service

10、查看mysql运行状态

ps -ef|grep mysql

11、在日志里查找root密码(如果从来没有启动过,是不会有这个日志的)

grep 'temporary password' /var/log/mysqld.log

12、使用初始化密码登录

mysql -uroot -p

13、未修改初始密码前,无法查看密码复杂性

14、修改初始密码,设置新密码

alter user 'root'@'localhost' identified with mysql_native_password by '123Qwe!!';

15、退出数据库

quit;

16、用新密码登录

mysql -uroot -p #新密码登录

16、设置开机启动

systemctl enable mysqld.service

三、mysql常用命令

1、登录mysql

mysql -uroot -p

2、查看自带的库

show databases;

3、进入数据库

use mysql

4、查看数据库有哪些表

show tables;

5、查看所有用户信息

select * from user; #表中文件过多显示很乱

select * from user\G; #表中文件排序显示

6、创建数据库(删除库命令,请勿乱用:drop database 库名;)

create database hefang;

7、查看数据库创建情况

show databases;

8、进入创建的数据库

use hefang;

9、查看数据库表

show tables;

10、创建名为t1表,并创建两个字段,id、name,varchar表示设置数据长度,用字符来定义长度单位,其中1汉字=2字符=2Bytes;

create table t1 (id varchar(20),name varchar(20));

11、查看数据库表

show tables;

12、向表中插入数据(多创建几条数据)

insert into t1 values ("123","hefang");

13、查看t1表数据内容;

select * from t1;

14、更新表中数据

update t1 set name='hefangya' where id=123;

15、带id、age多个条件查询;

select * from t1 where id=456 and name='hefang';

16、退出

quit;

四、修改密码复杂度

(注意:此步骤正式环境,不建议执行)

1、查看密码复杂度

show variables like 'validate_password%';

................

validate_password.check_user_name #用于验证密码强度的字典文件路径,默认NO;
validate_password.dictionary_file #用于验证密码强度的字典文件路径;
validate_password.length #密码最小长度,参数默认为8,它有最小值的限定;
validate_password.mixed_case_count #密码至少要包含的大写字母和小写字母的个数,默认1;
validate_password.number_count #密码至少要包含的数字个数,默认1;
validate_password.policy #密码强度等级检查;(默认是1,即MEDIUM)
validate_password.special_char_count # 密码至少要包含的特殊字符个数,默认1;

..................................

2、密码强度等级检查为0

set global validate_password.policy=0;

3、密码最小长度为6

set global validate_password.length=6;

4、查看密码复杂度修改情况

show variables like 'validate_password%';

5、修改密码,设置新密码

alter user 'root'@'localhost' identified with mysql_native_password by 'qaz`123';

6、退出数据库

quit;

验证新密码登录

mysql -uroot -p

新密码

7、quit; #退出

五、配置远程登录的用户

注意:配置可远程登录的用户,拥有全部权限

1、登录mysql

mysql -uroot -p

2、查看所有用户列表

select user from mysql.user;
drop user study; #删除用户

3、创建一个支持远程登录的用户(注意:%代表所有ip,生产环境不允配置,或可指定远程ip)

create User 'study'@'%' Identified With mysql_native_password BY '123Qwe!!' password expire never;

4、对这个用户授所有权限

grant all privileges on *.* to 'study'@'%' with grant option;

5、验证用户、主机、访问配置等权限情况

select user, host, password_last_changed, password_lifetime, password_expired,account_locked from mysql.user;

6、刷新权限

flush privileges;

7、退出

quit;

8、关闭防火墙

systemctl disable firewalld

9、查看mysql运行情况

ps -ef|grep mysql

10、查看mysql端口情况

netstat -anptu |grep mysq

用第三方(DBeaver)软件登录验证

登录成功

六、忘记密码了

1、停止mysql服务

systemctl stop mysqld

2、查找mysql配置文件

find / -name my.cnf

3、进入mysql的配置文件 /etc/my.cnf,找到[mysqld],在下面增加一行"skip-grant-tables',保存

vi /etc/my.cnf

4、重启mysq;服务

systemctl start mysqld

5、登录(无须密码回车登录)

mysql -uroot

6、先刷新权限表

flush privileges;

7、查看密码复杂度规则

show variables like 'validate_password%';

8、修改密码(IDENTIFIED授权,mysql_native_password是主流语言php和java等的支持的mysql加密方式)

alter user 'root'@'localhost' identified with mysql_native_password by '123Qwe!!';

9、退出

quit;

七、设置密码有效期

10、删除/etc/my.cnf里添加的 skip-grant-tables

vi /etc/my.cnf

11、重启mysql服务

systemctl restart mysqld

12、验证新密码

mysql -uroot -p

13、设置密码有效期

90天过期(注意:绿色字体是账号与密码,紫色为有效期)
alter user 'root'@'localhost' identified with mysql_native_password by '123Qwe!!' password expire interval 90 day;

设置永不过期
alter user 'root'@'localhost' identified with mysql_native_password by '123Qwe!!' password expire never;

14、先刷新权限表

flush privileges;

15、退出

quit

16、登录mysql验证

mysql -uroot -p

17、查看有效期设置情况
注意:显示全局默认密码生存周期的值,单位 :天;若结果为0或NULL,则表示已经关闭了密码过期功能;否则,需要修改该变量的值。

show variables like'default_password_lifetime';

18、先刷新权限表

flush privileges;

19、修改永久有效期

set global default_password_lifetime=-1;

20、验证设置情况

show variables like'default_password_lifetime';

21、通过 mysql.user 系统表查看数据库账号状态

select user, host, password_last_changed, password_lifetime, password_expired,account_locked from mysql.user;

#从mysql.user中选择用户、主机、密码上次更改、密码有效期、密码过期、帐户锁定;
user #用户
host #主机
password_expired #密码是否过期
password_last_changed #显示用户上次更改密码的时间。
password_lifetime #显示用户的密码有效期(以天为单位)。
account_locked #显示账户是否被锁定。

22、单独设置该账号密码90天过期

ALTER USER 'study'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;

23、验证

select user, host, password_last_changed, password_lifetime, password_expired,account_locked from mysql.user;

24、修改账号密码永不过期

ALTER USER 'study'@'localhost' PASSWORD EXPIRE NEVER;

25、验证

select user, host, password_last_changed, password_lifetime, password_expired,account_locked from mysql.user;

26、让此账号使用默认的密码过期全局策略

ALTER USER 'expuser'@'%' PASSWORD EXPIRE DEFAULT;

27、验证

select user, host, password_last_changed, password_lifetime, password_expired,account_locked from mysql.user;

28、查看默认的密码过期全局策略

show variables like 'default_password_lifetime';
set global default_password_lifetime = 90; #设置全局用户密码过期时间90天

29、使 study账号密码立即过期

ALTER USER 'study'@'localhost' PASSWORD EXPIRE;

30、验证

select user, host, password_last_changed, password_lifetime, password_expired,account_locked from mysql.user;

31、退出

quit;

32、登录验证账号过期情况

mysql -ustudy -p

33、刷新验证(未改密码,不允许操作)

flush privileges;

34、修改密码

alter user 'study'@'localhost' identified with mysql_native_password by '123Qwe!!' password expire never;

35、刷新验证

flush privileges;

36、开启用户远程登录,不限制ip(localhost=本机登录,%=所有ip,也可设置IP地址)

rename user 'study'@'localhost' to 'study'@'%';

37、验证

select user, host, password_last_changed, password_lifetime, password_expired,account_locked from mysql.user;

quit; #退出

八、MySQL 8.x主从复制

一、主库配置

MYSQL主从复制环境构建至少需2台服务器,可以配置1主多从,多主多从,此次为1主1从,MYSQL主从复制架构实战步骤:

系统环境准备,分别在两个虚拟机上搭建数据库

Master:192.168.1.209 #主库

Slave:192.168.1.210 #从库

1、登录主库 192.168.63.209

mysql -uroot -p

2、然后在主库创建用户 #如用户已存在,可以执行次命令删除DROP USER '用户名'@'hostIP';

create User 'repl'@'192.168.63.210' Identified With mysql_native_password BY '123Qwe!!' password expire never;

3、授权

grant all privileges on *.* to 'repl'@'192.168.63.210' with grant option;

4、刷新

flush privileges;

5、退出

quit;

6、在主库上配置my.cnf文件

vi my.cnf

.......................................

log_bin=mysqlbinlog

server-id=2

......................................

7、重启数据库

systemctl restart mysqld

8、在从库(192.168.63.210)上远程登录验证

mysql -h192.168.63.209 -urepl -p

9、查看主库的文件

show databases;

10、退出

quit;

11、在从库上配置my.cnf文件

vi my.cnf

.......................................

log_bin=mysqlbinlog

server-id=3

......................................

12、查看配置情况#显示前后两行与行号

grep "log_bin=mysqlbinlog" /etc/my.cnf -nC 2

13、重启数据库

systemctl restart mysqld

14、进入数据库配置文件

cd /etc/my.cnf.d/

15、在主库上全量备份,并查看和记录binlog信息(用1参数备份,使用数据库密码)

mysqldump -uroot -p --all-databases --single-transaction --flush-logs --master-data=1 > /data/all_databases_01.sql

(用2参数备份)

mysqldump -uroot -p --all-databases --single-transaction --flush-logs --master-data=2 > /data/all_databases_02.sql

16、查看参数1(没有注释)参数2(有注释)区别,(在vi中输入:set nu可临时显示行号)

vi /data/all_databases_01.sql 或 sed -n '24p' /data/all_databases_01.sql

vi /data/all_databases_02.sql 或 sed -n '24p' /data/all_databases_02.sql

17、将备份的文件上传到从库服务器(此处使用服务器系统root账号密码)

scp -r /data/all_databases_01.sql root@192.168.63.210:/data/all_databases_01.sql

18、在从库上查看备份文件

ls -la /data

19、在从库上登录mysql

mysql -uroot -p

20、在从库上恢复主库备份文件

source /data/all_databases_01.sql

21检查恢复情况

show databases;

22、退出

quit;

23、查看从库中的文件

awk 'NR==24' /data/all_databases_01.sql

24、进入数据库

mysql -uroot -p

25、从库连接到主库

CHANGE MASTER TO MASTER_HOST='192.168.63.209',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='123Qwe!!',MASTER_LOG_FILE='mysqlbinlog.000019',MASTER_LOG_POS=157;

26、开启

start slave;

27、查看状态(注意如果显示启动失败,日志提示主从库uuid相同,请查看uuid情况 cat /var/lib/mysql/auto.cnf文件,修改后请重启mysql数据库)

show slave status\G;

28、登录主库

mysql -uroot -p

29、在主库创建数据库

create database hefang2;

30、查看数据库创建情况

show databases;

31、进入创建的数据库

use hefang2;

32、查看数据库表

show tables;

33、创建名为t2表,并创建两个字段,id、name,varchar表示设置数据长度,用字符来定义长度单位,其中1汉字=2字符=2Bytes;

create table t2 (id varchar(20),name varchar(20));

34、查看数据库表

show tables;

35、向表中插入数据(多创建几条数据)

insert into t2 values ("123","hefang2");

36、查看t2表数据内容;

select * from t2;

37、在从库查看同步情况

show databases;

38、进入创建的数据库

use hefang2;

39、查看t表数据内容;

select * from t2;

40、为保证从库的数据安全,限制写入权限,设置只能只读

set global read_only=1;

41、查看设置情况

show global variables like "%read_only%";

相关推荐
会飞的土拨鼠呀4 小时前
如何查询MySQL的CPU使用率突然变高
数据库·mysql
甘露s4 小时前
MySQL深入之索引、存储引擎和SQL优化
数据库·sql·mysql
QuantumLeap丶5 小时前
《Flutter全栈开发实战指南:从零到高级》- 25 -性能优化
android·flutter·ios
Arva .5 小时前
MySQL 的存储引擎
数据库·mysql
Logic1015 小时前
《Mysql数据库应用》 第2版 郭文明 实验5 存储过程与函数的构建与使用核心操作与思路解析
数据库·sql·mysql·学习笔记·计算机网络技术·形考作业·国家开放大学
何中应6 小时前
【面试题-6】MySQL
数据库·后端·mysql·面试题
TDengine (老段)6 小时前
从关系型数据库到时序数据库的思维转变
大数据·数据库·mysql·时序数据库·tdengine·涛思数据·非关系型数据库
2301_768350236 小时前
MySQL服务配置与管理
数据库·mysql
木易 士心6 小时前
MVC、MVP 与 MVVM:Android 架构演进之路
android·架构·mvc