MySql安装和运维

标签: 无 分类: 未分类 创建时间:2021-11-27 14:27:43 更新时间:2025-01-17 10:39:22

1.CentOS中安装

CentOS8中安装MySQL 8.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
## 下载源 https://dev.mysql.com/downloads/repo/yum/
## 在网站上下载相应的rpm,比如 CentOS8:mysql80-community-release-el8-2.noarch.rpm

## 安装源
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

# 先执行
yum module disable mysql
## 再执行
yum install mysql-community-server

## 启动 mysql
systemctl start mysqld

## 查看临时密码
grep 'temporary password' /var/log/mysqld.log

## 登录
mysql -u root -p

## 修改临时密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
## or
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

## 刷新系统表
flush privileges;

配置文件位置:/etc/my.cnf

参考文章:
1.centos7 | All matches were filtered out by modular filtering for argument: mysql-community-server
2.CentOS安装MySQL详解 有yum方式安装,有源码编译安装,有rpm包安装方式,还有登录和修改密码的方法
3.Mysql 8.0修改密码
4.MySQL 8.0修改密码

2.Deepin中安装

(1) 下载 APT Repository,双击deb,安装仓库,这里会提示不兼容,因为我使用的是Deepin 20.5,是基于Debian 10的,也就是 Debian 10(”buster”) ,Debian 11 (“bullseye”),我选择了1。

(2) 选择安装的产品,我输入了1

(3) 选择安装的数据库版本,我选择了单机版mysql-8.0。选择了之后,又回到了上面的一部,直接填入4,确定就可以了。

安装完了apt仓库,就可以安装mysql了

(4) 安装mysql

1
2
3
4
## 更新源
sudo apt-get update
## 安装 mysql-server 和 mysql-client
sudo apt-get install mysql-server mysql-client

(5) 配置root密码

(6) 配置默认的密码策略,这个可以修改

(7) 完成安装

(8) 卸载

1
2
3
4
apt purge mysql-*
rm -rf /etc/mysql/ /var/lib/mysql
apt autoremove
apt autoclean
参考文章:
1.Deepin安装MySQL 这里直接下载的Deb安装包。
2.Debian 发行版本
3.MySQL版本Enterprise/Community/Cluster等版本的区别 MySQL Cluster:Cluster集群版,开源免费,可将几个MySQL Server封装成一个Server;MySQL Community Server:Community是社区版本,开源免费,但不提供官方技术支持;MySQL Enterprise Edition:Enterprise企业版本,需付费,可以试用30天,提供官网技术支持;
4.Ubuntu安装MySQL8.0 这里也是下载了apt-config配置包,选择了
5.Ubuntu安装MySQL8.0 MySQL APT管理包,安装和服务配置,配置远程连接,还有卸载MySQL。

3.密码复杂度和过期策略

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 通过 INSTALL PLUGIN 命令可安装此插件
# 每个平台的文件名后缀都不同 对于 Unix 和类 Unix 系统,为.so,对于 Windows 为.dll
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';

## INSTALL PLUGIN validate_password SONAME 'validate_password.dll'
## > OK
## > 时间: 0.013s

# 查看 validate_password 相关参数
mysql> show variables like 'validate%';

## 修改密码复杂度,0 or LOW 仅需需符合密码长度(由参数validate_password_length指定);1 or MEDIUM 满足LOW策略,同时还需满足至少有1个数字,小写字母,大写字母和特殊字符;2 or STRONG 满足MEDIUM策略,同时密码不能存在字典文件(dictionary file)中
mysql> set global validate_password_policy = 1;

# 设置全局过期策略 先手动更改再加入配置文件
mysql> SET GLOBAL default_password_lifetime = 90;
# 显示密码有效期
mysql> show variables like 'default_password_lifetime';

# 写入配置文件使得重启生效
[mysqld]
default_password_lifetime = 90
参考文章:
1. MySQL密码复杂度与密码过期策略介绍 这里有安装插件,设置密码策略,显示策略等,上面的命令主要参考这个
2.mysql用户口令复杂度_MySQL密码复杂度策略 MySQL 8.0.15
3.MySQL 5.7 密码策略
4.Mysql数据库密码设置策略
5.MySQL 5.7 用户密码安全策略设置

问题:

(1) You must reset your password using ALTER USER statement before executing this statement

1
2
3
4
5
6
7
## 修改密码,这里注意可能是localhost,也可能是%,我就是犯了这个 localhost 的错误,总是修改不成功密码
mysql> alter user 'root'@'localhost' identified by '123456';
mysql> FLUSH PRIVILEGES;

## 查看用户
mysql> use mysql;
mysql> select user,host from user;
参考文章:
1.windows的MySQL修改root密码的4种方法
2.mysql 报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executin
3.mysql5.7初始化密码报错 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before 先是把密码策略修改了,set global validate_password_policy=0; set global validate_password_length=1; 然后 alter user ‘root’@’localhost’ identified by ‘123456’;
4.Mysql5.7安装修改密码后报错: You must reset your password using ALTER USER…….. SET PASSWORD =PASSWORD(‘newpassord’); ALTER USER ‘root’@’localhost’ PASSWORD EXPIRE NEVER;flush privileges;
5.How to resolve ERROR 1396 (HY000): Operation ALTER USER failed for ‘root’@’localhost’?
6.ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 这个也是 ALTER user ‘root’@’localhost’ IDENTIFIED BY ‘你的密码’;
7.Reset MySQL root password using ALTER USER statement after install on Mac mysql> UPDATE mysql.user SET Password=PASSWORD(‘your_new_password’) WHERE User=’root’;
8.How to resolve ERROR 1396 (HY000): Operation ALTER USER failed for ‘root’@’localhost’? select user,host from user;

(2) navicat and connection is being used
删除链接重新创建,不行就关掉Navicat,重新打开

4.开启审计功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
## 下载server_audit.dll插件,复制到 lib/plugin目录下
## 显示插件目录
mysql> SHOW GLOBAL VARIABLES LIKE 'plugin_dir';
## 执行安装命令
mysql> INSTALL PLUGIN server_audit SONAME 'server_audit.dll';
## 查看
mysql> show variables like '%audit%';
#备注:指定哪些操作被记录到日志文件中

set global server_audit_events='CONNECT,QUERY,TABLE,QUERY_DDL';
#备注:开启审计功能
set global server_audit_logging=on;

#备注:默认存放路径,可以不写,默认到data文件下
#set global server_audit_file_path =/data/mysql/auditlogs/
#备注:设置文件大小
set global server_audit_file_rotate_size=200000000;

#指定日志文件的数量,如果为0日志将从不轮转
set global server_audit_file_rotations=200;

#强制日志文件轮转
set global server_audit_file_rotate_now=ON;

## 查看
show variables like '%audit%';

## 设置永久生效配置,修改配置文件my.ini
[mysqld]
#备注:防止server_audit 插件被卸载

server_audit=FORCE_PLUS_PERMANENT

#备注:指定哪些操作被记录到日志文件中
server_audit_events='CONNECT,QUERY,TABLE,QUERY_DDL'
server_audit_logging=on
server_audit_file_rotate_size=200000001
server_audit_file_rotations=200
server_audit_file_rotate_now=ON

#如果设置了防卸载,需要先去掉该配置 server_audit = FORCE_PLUS_PERMANENT
UNINSTALL PLUGIN server_audit;
show variables like '%audit%';
参考文章:
1.MySQL数据库开启审计日志
2. Mysql 如何开启审计日志功能 这是linux安装 audit-plugin-mysql 插件
3.Mysql-5.7.37安装审计日志插件
4.从零开始在window10系统下mysql5.7安装审计插件(亲测绝对可用) 下载MariaDB拿到对应的审计插件,然后安装到mysql上。这里直接提供了 server_audit.dll 的下载,文章非常的详细,可以参考
5.MySQL审计插件介绍 这是linux的安装和配置,还包括了 MySQL 社区版审计日志现状.
6.mysql审计开启–两种方法 第一种方法:安装插件的方式;第二种:通过init-connect

5.开启备份

6.日志清理

(1) 临时有效

1
2
3
4
5
6
7
8
9
---- 查看,0-表示永不过期, 单位由天改为秒了
show variables like "%expire%";
---- 设置 7 天
set global binlog_expire_logs_seconds=7*60*60*24;


purge binary logs to 'mysql-bin.012391'; #删除 'mysql-bin.012390'前日志,保留 'mysql-bin.012390'
PURGE binary LOGS BEFORE '2023-08-13 03:00:00'; #清除2023-08-13 03:00:00前binlog日志
PURGE binary LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); #清除3天前binlog日志

(2)永久有效

1
vi /etc/my.cnf
参考文章:
【1】.MySQL binlog超过binlog_expire_logs_seconds阈值没有删除案例
【2】.Mysql binlog日志太多,占用大量磁盘空间该如何正确处理 可以先rm 删除binlog日志文件,再执行purge binary logs to ‘mysql-binlog.000100’.
【3】.MySQL Binlog日志保留时长配置 & 删除方法 <临时有效>方式 - 命令行; <永久有效>方式 - 配置文件;Binlog日志自动清理 & 手动删除方法
【4】.(已解决)ERROR 3683 (HY000): The option expire_logs_days and binlog_expire_logs_seconds cannot be used 这个参数已经弃用, 改用binlog_expire_logs_seconds ,单位由天改为秒
【5】.MySQL安全删除binlog日志 在my.cnf中配置”expire_logs_days”参数,安装删除日志

7.不记录日志

参考文章:
【1】.mysql create table 不记录日志 1.使用DISCARD TABLESPACE语句。2.使用CREATE TABLE … ENGINE=MEMORY语句。3.使用SET autocommit=0语句。
【2】.mysql binlog 不记录 1.打开MySQL的配置文件;2.定位到[mysqld]部分;3.添加配置项binlog-ignore-db,指定需要忽略的数据库;4.保存并关闭配置文件;5.重启MySQL服务;6.验证配置是否生效。
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。