# 新增用户权限拷贝
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO `idss`@`%`;
FLUSH PRIVILEGES;
show grants for idss;
# 修改root密码
alter user 'root'@'localhost' identified by 'cy7m0ypu8CpLFperzI45';
# 创建cmdb库和cmdb远程链接用户 操作cmdb所有权限
create database cmdb character set utf8 collate utf8_bin;
create user 'cmdb'@'%' identified by 'Liandong@2022';
grant all privileges on cmdb.* to cmdb@'%';
# 一行命令建用户加赋权官方已经弃用了,mysql5.7可以但warning,mysql8不行
GRANT SELECT ON *.* TO 'read_only'@'%' IDENTIFIED BY 'PAP@!111';
# 1.新建用户【readonly】全库只读
CREATE USER 'readonly'@'%' IDENTIFIED BY 'Password@@!!$$11';
GRANT SELECT ON *.* TO 'readonly'@'%';
FLUSH PRIVILEGES;# 2.新建用户【readonly】在【db001库】单库只读
CREATE USER 'readonly'@'%' IDENTIFIED BY 'Jinggang@twcs2022';
GRANT SELECT ON twcs.* TO 'readonly'@'%';
FLUSH PRIVILEGES;# 确认权限:
show grants for 'readonly'@'%'\G
SELECT * FROM mysql.user WHERE user='readonly'\G
零 mysql日志:
MySQL中一般有以下几种日志:
日志类型 写入日志的信息
错误日志 记录在启动,运行或停止mysqld时遇到的问题
通用查询日志 记录建立的客户端连接和执行的语句
二进制日志 记录更改数据的语句
中继日志 从复制主服务器接收的数据更改
慢查询日志 记录所有执行时间超过 long_query_time 秒的所有查询或不使用索引的查询
DDL日志(元数据日志) 元数据操作由DDL语句执行
————————————————
版权声明:本文为CSDN博主「Alex【大树】」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43628257/article/details/121356130
一 查询死锁
show OPEN TABLES where In_use > 0;
mysql8:
create user 'admin'@'%' identified by 'Liandong@123';
flush privileges;
grant all privileges on *.* to 'admin'@'%' with grant option;
create user 'read_all_user'@'%' identified by 'Liandong@mysql123';
flush privileges;
GRANT SELECT ON *.* TO 'read_all_user'@'%' WITH GRANT OPTION;
select User, Host, Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv from mysql.user;
2.授权:
授权:grant all privileges on 数据库 to '用户名'@'IP地址';
撤销权限:revoke all privileges from 数据库 to '用户名'@'IP地址';
all privileges指除了grant之外的所有权限,也可以自己设置权限
例如:grant insert on world.* to '用户名'@'IP地址';(只能对world数据库做插入操作,world.*表示对world中所有表)
————————————————
版权声明:本文为CSDN博主「糯米团子鸭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43332829/article/details/123382600
# 解锁思路文章 mysql57 https://www.jb51.net/article/247016.htm-----
目录
背景
故障追踪
解决方案
第一步:查看表使用
第二步:查看进程
第三步:查看当前运行的所有事务
第四步:查看当前出现的锁
第五步:查询锁等待的对应关系
第六步:kill掉事务
MySQL的锁
MySQL锁表场景
Waiting for table metadata lock
场景一:长事务运行,阻塞DDL,继而阻塞所有同表的后续操作。
场景二:为提交事务,阻塞DDL,继而阻塞所有同表的后续操作。
场景三:显式事务失败操作获得锁,未释放
小结
总结
#---------------- mysql8常用命令:-------------------------
create user 'admin'@'%' identified by 'Liandong@123';
flush privileges;
grant all privileges on *.* to 'admin'@'%' with grant option;
create user 'read_all_user'@'%' identified by 'Liandong@mysql123';
flush privileges;
GRANT SELECT ON *.* TO 'read_all_user'@'%' WITH GRANT OPTION;
select User, Host, Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv from mysql.user;
2.授权:
授权:grant all privileges on 数据库 to '用户名'@'IP地址';
撤销权限:revoke all privileges from 数据库 to '用户名'@'IP地址';
all privileges指除了grant之外的所有权限,也可以自己设置权限
例如:grant insert on world.* to '用户名'@'IP地址';(只能对world数据库做插入操作,world.*表示对world中所有表)
版权声明:本文为CSDN博主「糯米团子鸭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43332829/article/details/123382600
find /linkdata/backup_mysql/binlog -mtime +7 -name "*.*" -exec rm -Rf {} \;
0 0 * * * find /linkdata/logs/bike-central-control-gateway/logs -mtime +30 -name "*.*" -exec rm -Rf {} \;
# --------查询死锁 mysql8 文章1 ---------------
# https://blog.csdn.net/zhougubei/article/details/121329428
show OPEN TABLES where In_use > 0;
# 查询死锁表
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
# 查询死锁等待时间
SELECT * FROM information_schema.INNODB_LOCK_waits;
# 8.0版本之后替换为
select * from performance_schema.data_locks;
select * from performance_schema.data_lock_waits;
========================================================
desc performance_schema.data_locks;
+-----------------------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------+------+-----+---------+-------+
| ENGINE | varchar(32) | NO | PRI | NULL | |
| ENGINE_LOCK_ID | varchar(128) | NO | PRI | NULL | |
| ENGINE_TRANSACTION_ID | bigint unsigned | YES | MUL | NULL | |
| THREAD_ID | bigint unsigned | YES | MUL | NULL | |
| EVENT_ID | bigint unsigned | YES | | NULL | |
| OBJECT_SCHEMA | varchar(64) | YES | MUL | NULL | |
| OBJECT_NAME | varchar(64) | YES | | NULL | |
| PARTITION_NAME | varchar(64) | YES | | NULL | |
| SUBPARTITION_NAME | varchar(64) | YES | | NULL | |
| INDEX_NAME | varchar(64) | YES | | NULL | |
| OBJECT_INSTANCE_BEGIN | bigint unsigned | NO | | NULL | |
| LOCK_TYPE | varchar(32) | NO | | NULL | |
| LOCK_MODE | varchar(32) | NO | | NULL | |
| LOCK_STATUS | varchar(32) | NO | | NULL | |
| LOCK_DATA | varchar(8192) | YES | | NULL | |
==============================================================
| INNODB | 140090120847976:2308:421:166:140089846506032 | 221795229 | 179 | 739995 | bike_core | park_current_vehicles | NULL | NULL | index_time_park | 140089846506032 | RECORD | X,REC_NOT_GAP | GRANTED | NULL |
| INNODB | 140090120847976:2308:604:2:140089846506152 | 221795229 | 179 | 739995 | bike_core | park_current_vehicles | NULL | NULL | index_time_park | 140089846506152 | RECORD | X,REC_NOT_GAP | GRANTED | NULL |
| INNODB | 140090120847976:2308:604:3:140089846506152 | 221795229 | 179 | 739995 | bike_core | park_current_vehicles | NULL | NULL | index_time_park | 140089846506152 | RECORD | X,REC_NOT_GAP | GRANTED | NULL |
| INNODB | 140090120847976:2308:604:4:140089846506152 | 221795229 | 179 | 739995 | bike_core | park_current_vehicles | NULL | NULL | index_time_park | 140089846506152 | RECORD | X,REC_NOT_GAP | GRANTED | NULL |
| INNODB | 140090120847976:2308:604:5:140089846506152 | 221795229 | 179 | 739995 | bike_core | park_current_vehicles | NULL | NULL | index_time_park | 140089846506152 | RECORD
==============================================================
# -----------------------mysql8 死锁 文章2------------------
# https://blog.csdn.net/w892824196/article/details/113850574
select * from performance_schema.data_locks\G;
# 查询表大小 mysql8
https://blog.csdn.net/ctypyb2002/article/details/107962260
select a.SCHEMA_NAME,
a.DEFAULT_CHARACTER_SET_NAME,
a.DEFAULT_COLLATION_NAME,
sum(table_rows) as '记录数',
sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',
sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)',
sum(truncate((data_length+index_length)/1024/1024, 2)) as '总大小(MB)',
sum(truncate(max_data_length/1024/1024, 2)) as '最大值(MB)',
sum(truncate(data_free/1024/1024, 2)) as '空闲空间(MB)'
from INFORMATION_SCHEMA.SCHEMATA a
left outer join information_schema.tables b
on a.SCHEMA_NAME=b.TABLE_SCHEMA
group by a.SCHEMA_NAME,
a.DEFAULT_CHARACTER_SET_NAME,
a.DEFAULT_COLLATION_NAME
order by sum(data_length) desc,
sum(index_length) desc
;
# binglog保存多久合适
https://blog.csdn.net/lihongbao80/article/details/121498529
#
不同粒度锁的比较:
表级锁: 开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
这些存储引擎通过总是一次性同时获取所有需要的锁以及总是按相同的顺序获取表锁来避免死锁。
表级锁更适合于以查询为主,并发用户少,只有少量按索引条件更新数据的应用,如Web 应用
行级锁: 开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
最大程度的支持并发,同时也带来了最大的锁开销。
在 InnoDB 中,除单个 SQL 组成的事务外,锁是逐步获得的,这就决定了在 InnoDB 中发生死锁是可能的。行级锁只在存储引擎层实现,而Mysql服务器层没有实现。 行级锁更适合于有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用,如一些在线事务处理(OLTP)系统
页面锁: 开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
————————————————
版权声明:本文为CSDN博主「胡安民」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45203607/article/details/123015805
二 导入sql
导入优化思路:
https://blog.csdn.net/weixin_29382705/article/details/113304704
导入优化设置参数:
https://www.zsxcool.com/16919.html
Mysql性能调优之max_allowed_packet:
https://blog.csdn.net/yuchenai/article/details/111470453
查看容量大小排序:
https://blog.csdn.net/leigin/article/details/107873743
bin-log日志设置:
https://blog.csdn.net/lihongbao80/article/details/121498529
1、新建一个 mysqlimport.sh
shell脚本,脚本里写:
mysql -uroot -proot -hlocalhost --database=db1 < db1.sql
2、回到终端执行:
nohup sh mysqlimport.sh &
脚本便会切换到后台执行导入,此时可以使用 tail -f nohup.log
查看执行日志。
3、按回车回到终端界面,输入命令 exit
退出当前终端。
第3步很关键,一定要这样执行退出终端
。如果在nohup执行成功后直接点关闭程序按钮关闭终端的话,这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown,起不到关掉终端后调用程序继续后台运行的作用。