# MySQL - 基于ibd文件恢复表数据
https://abc.htmltoo.com/thread-46656.htm
# MySQL数据恢复工具-binlog2sql
https://abc.htmltoo.com/thread-46462.htm
# mysql,优化SQL语句,慢日志分析
https://abc.htmltoo.com/thread-46296.htm
# sql_helper - mysql索引优化
https://abc.htmltoo.com/thread-46704.htm
# mysqlstat - 实时监控和分析MySQL
https://abc.htmltoo.com/thread-46703.htm
# slowquery - 慢查询分析
https://abc.htmltoo.com/thread-46743.htm
# mysql-binlog清除
https://abc.htmltoo.com/thread-46460.htm
# 注意-P为大写; -A为数据库太大,取消预读数据库信息,加快速度.
mysql -A -u root -p 123456 -h localhost -P端口
status; # 查看版本
# 仅备份数据库结构
mysqldump -uroot -pwdqdmm@r -d cndob > /data/file/mysql/$(date +%Y%m%d)/cndob.sql;
# 导出单个数据表结构和数据
mysqldump -uroot -pwdqdmm@r database table > /data/file/mysql/$(date +%Y%m%d)/cndob.sql;
# 备份数据库结构,数据
mysqldump -uroot -pwdqdmm@r cndob > /data/file/mysql/$(date +%Y%m%d)/cndob.sql;
mysqldump -uroot -pwdqdmm@r --all-databases > /data/file/mysql/$(date +%Y%m%d)/mysql.sql;
# 备份
mysqldump -u'root' -p'wdqdmm@r' -h'127.0.0.1' -P'3306' --all-databases --ignore-table=information_schema.* --ignore-table=performance_schema.* --ignore-table=mysql.* --ignore-table=sys.* --triggers --routines --events > /data/file/mysql/mysql.sql;
-压缩, 解压用: gunzip mysql.sql.gz;
--events | /usr/bin/gzip > /data/file/mysql/mysql.sql.gz;
-备份过程中锁定表,防止数据被修改
--lock-all-tables
--lock-tables
-跳过表锁
--lock-tables=0
-跳过库,表
--ignore-table=information_schema.* --ignore-table=performance_schema.* --ignore-table=mysql.* --ignore-table=sys.*
-事务锁定表
--single-transaction
-备份触发器
--triggers
-备份存储过程
--routines
--events
# --set-gtid-purged=OFF
mysqldump --all-databases --set-gtid-purged=OFF --triggers --routines --events -u'root' -h'127.0.0.1' -p'wdqdmm@r' -P'3306' | /usr/bin/gzip > /opt/mysql.sql.gz;
-压缩
| bzip2 > mysql.sql.bz2
| gzip > mysql.sql.gz
-Linux 解压缩 保留源文件的方法
gunzip -c mysql.sql.gz > mysql.sql
-Linux 解压缩(不保留源文件)
gzip -dv mysql.sql.gz
gunzip -c mysql.sql.gz
bzip2 -d mysql.sql.bz2
不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……
mysqldump -uroot -p --host=localhost --all-databases --ignore-table=mysql.user
--events, -E
导出事件。
--triggers
导出触发器。该选项默认启用,用--skip-triggers禁用它。
--routines, -R
导出存储过程以及自定义函数。
mysql -A -uroot -pwdqdmm@r -hmariadb -P3306;
mysql -A -uroot -pwdqdmm@r -h127.0.0.1
mysql -A -uroot -pwdqdmm@r; # 登陆
use mysql;
show databases; # 查看所有数据库
select host,user from mysql.user; # 查看所有用户
CREATE DATABASE cndob; # 新建数据库
DROP DATABASE cndob; # 删除数据库
mysql8:
use mysql;
drop user ihunter@'%'; # 删除
drop user root@'%'; # 删除
create user ihunter@'%' identified by '***'; # 增加
grant all privileges on *.* to ihunter@'%' with grant option;
grant replication slave on *.* to 'slave'@'%';
ALTER USER ihunter@'%' IDENTIFIED WITH mysql_native_password BY '***'; # 修改密码 or 解决1045异常.
flush privileges;
select host,user from mysql.user; # mysql8 查看所有用户
# 修改授权主机ip
use mysql;
update user set host='127.0.01' where user = 'root' and host='%'';
update user set host='%' where host='localhost';
# 新建用户,用户授权:
grant all on *.* to 'ihunter'@'%' identified by 'wdqdmm@m' with grant option;
-只读帐号
grant SELECT on *.* to 'ihunter'@'%' identified by 'wdqdmm@m' with grant option;
drop user root@'%';
grant all on wwwecdoo.* to 'wwwecdoo'@'10.42.%' identified by 'wdqdmm@Mysql' with grant option;
grant usage on wwwecdoo.* to 'wwwecdoo'@'%' identified by 'beta_aqribnzv' with grant option;
# 5.6修改密码:
use mysql;
update user set password=password('wdqdmm@r') where user = 'root';
flush privileges;
# 5.7修改密码
alter user 'root'@'localhost' identified by 'p';
update mysql.user set authentication_string=password('p') where user='root' and Host = 'localhost';
flush privileges;
# 导入:
mysql>use cndob; #database_name 替换成需要还原的数据库
mysql>source /data/file/mysql/20190327/cndob.sql; # 选择备份数据对应路径即可完成
#docker导出
docker exec mariadb sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
#docker导入
docker exec -i mariadb sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql
docker exec mariadb sh -c 'exec mysqldump --all-databases -uroot -pwdqdmm@r' > /data/file/b-sql-$(date +%Y%m%d).tar.bz2;
docker exec -i mariadb sh -c 'exec mysql -uroot -pwdqdmm@r' < /data/file/b-sql-$(date +%Y%m%d).sql;
# root登陆异常, 取消root的本地登录限制
mysql -A -uihunter -pwdqdmm@m -hmariadb -P3306;
use mysql;
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;
# 账户权限查询
-查询当前登录用户权限
show grants;
-查询指定用户权限
show grants for ihunter@"%";
# 账户权限设置
CREATE USER 'ihunter'@'%' IDENTIFIED BY 'ZZSVJnmfQgYvWYEc';
-管理MySQL 中所有数据库的权限。
grant all on `abc`.* from 'ihunter'@'%';
-查询、插入、更新、删除 数据库中所有表数据的权利。
grant select, insert, update, delete on *.* to 'ihunter'@'%'
-grant 创建、修改、删除 MySQL 数据表结构权限。
grant create, alter, drop on *.* to 'ihunter'@'%'
-操作 MySQL 外键权限。
grant references on .....
-操作 MySQL 临时表权限。
grant create temporary tables on testdb.* to ....
-操作 MySQL 索引权限。
grant index on testdb.* to ....
-操作 MySQL 视图、查看视图源代码 权限
grant create view on testdb.* to .....
grant show view on testdb.* to .....
-操作 MySQL 存储过程、函数 权限
grant create routine on testdb.* to ....
grant alter routine on testdb.* to .....
grant execute on testdb.* to .....
-作用在存储过程、函数上:
grant execute on procedure testdb.pr_add to ....
grant execute on function testdb.fn_add to ....
# 增加部分权限
GRANT SELECT ON `abc`.* TO 'ihunter'@'%';
GRANT SELECT, INSERT, UPDATE, delete , ALTER ON `abc`.* TO 'ihunter'@'%';
GRANT UPDATE,DELETE,ALTER ON `abc`.oauth_access_token TO 'ihunter'@'%';
GRANT UPDATE,DELETE,ALTER ON `abc`.qbt_biz_order_finance TO 'ihunter'@'%';
-取消
revoke all on `abc`.* from 'ihunter'@'%';
# MySQL修改密码
-5.7
update mysql.user set authentication_string = password('gAJfY5umYpoFC6QD') where user='liusuyu';
-5.6
UPDATE mysql.user SET password=PASSWORD(’新密码’) WHERE User=’root’;
FLUSH PRIVILEGES;
-密码策略
SHOW VARIABLES LIKE 'validate_password%'; # MEDIUM: 中等, LOW: 低等
-设置密码策略为低
set global validate_password_policy=LOW;
# 查看进程
---查看正在执行的sql语句
show processlist;
---停止正在执行的sql语句
kill id(正在执行的sqlID)
# 查看当前数据包大小。
show VARIABLES like '%max_allowed_packet%';
temp:
mysqldump -uroot -pwdqdmm@m wwwcndo > /data/file/mysql/20190327/wwwcndo.sql;
mysqldump -uroot -pwdqdmm@m wwwxmfv > /data/file/mysql/20190327/wwwxmfv.sql;
mysqldump -uroot -pwdqdmm@m wwwycboo > /data/file/mysql/20190327/wwwycboo.sql;
mysqldump -uroot -pwdqdmm@m wwwkufind > /data/file/mysql/20190327/wwwkufind.sql;
mysqldump -uroot -pwdqdmm@m wwweduboo > /data/file/mysql/20190327/wwweduboo.sql;
mysqldump -uroot -pwdqdmm@m wwwcnfood > /data/file/mysql/20190327/wwwcnfood.sql;
mysqldump -uroot -pwdqdmm@m wwwecdoo > /data/file/mysql/20190327/wwwecdoo.sql;
mysqldump -uroot -pwdqdmm@m domsngg > /data/file/mysql/20190327/domsngg.sql;
mysqldump -uroot -pwdqdmm@m domsntongji > /data/file/mysql/20190327/domsntongji.sql;
mysql版本升级兼容处理: mysql error:#1547 mysql.proc is wrong
/usr/local/mariadb/bin/mysql_upgrade -uroot -p*
---查看数据库的编码集
show variables like '%character%';
---查看目前字符集编码
SHOW VARIABLES LIKE '%char%';
show variables like 'character_set%'; # 查看当前环境的character_set
show variables like 'collation%'; # 查看当前的collation
SET GLOBAL character_set_client = utf8mb4;
SET GLOBAL character_set_connection = utf8mb4;
SET GLOBAL character_set_database = utf8mb4;
SET GLOBAL character_set_results = utf8mb4;
SET GLOBAL character_set_server = utf8mb4;
#如果你的数据库中已经存在表了,建议进行修复一下
mysqlcheck -A -uihunter -pwdqdmm@m -h39.101.166.123 --auto-repair --optimize --all-databases
create database db_name; -- 创建数据库
show databases; -- 显示所有的数据库
drop database db_name; -- 删除数据库
use db_name; -- 选择数据库
create table tb_name (字段名 varchar(20), 字段名 char(1)); -- 创建数据表模板
show tables; -- 显示数据表
desc tb_name; -- 显示表结构
drop table tb_name; -- 删除表
# information_schema: 查看一些db的基础信息
use information_schema; -- mysql的基础信息库
select * from ENGINES ; -- 后台存储引擎信息数据的表
show engines; -- mysql窗口界面的命令
select * from GLOBAL_STATUS ; -- 当前运行的全局的status参数信息数据
show status; -- 命令行查看
select * from GLOBAL_VARIABLES ; -- 当前的全局的参数存储的数据
show variables; -- 命令行查看
---mysql_stmt_prepare failed
--max_prepared_stmt_count参数限制了同一时间在mysqld上所有session中prepared 语句的上限。
--它的取值范围为“0 - 1048576”,默认为16382。
--mysql对于超出max_prepared_stmt_count的prepare语句就会报1461的错误。
show global variables like '%stmt%';
set global max_prepared_stmt_count=124000;
docker exec -it mariadb /bin/bash
docker exec -it mariadb mysql -uroot -pwdqdmm@r -e"set global max_prepared_stmt_count=124000;"
#1 表示不区分大小写 2表示区分大小写
lower_case_table_names=2
lower_case_table_names: 此参数不可以动态修改,必须重启数据库
lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的
lower_case_table_names=2, 表名存储为给定的大小写但是比较的时候是小写的
---
show global variables like '%lower_case_table_names%';
set global lower_case_table_names=0;
-压缩备份
mysqldump --single-transaction -hlocalhost --all-databases --triggers --routines --events -P3306 -uroot -pxxxx |gzip > test.tar.gz
-压缩还原
gunzip < test.tar.gz |mysql -hlocalhost -uroot -pxxxxx
---mysql版本升级兼容处理: mysql error:#1547 mysql.proc is wrong
/usr/local/mariadb/bin/mysql_upgrade -uroot -p*
---修复数据库:
所有数据库: /usr/local/mariadb/bin/mysqlcheck --auto-repair -A -o -uroot -p*
单一数据库:/usr/local/mariadb/bin/mysqlcheck --auto-repair --databases kufind -o -uroot -p*
---SQL语句的执行时间过长:
/usr/local/mariadb/bin/mysqldumpshow
mysqldumpslow -s c -t 20 /var/log/mariadb/slow.log
mysqldumpslow -s r -t 20 /var/log/mariadb/slow.log
-上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” /var/log/mariadb/slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。
mysql相关: https://abc.htmltoo.com/search-mysql.htm
mariadb相关: https://abc.htmltoo.com/search-mariadb.htm
mycat相关: https://abc.htmltoo.com/search-mycat.htm
0.CentOS下mysql常用命令. 1.CentOS服务器下MySQL数据库101个优化技巧. 2.mysql数据库如何增量备份数据.
3.mysql主从复制实现数据库同步. 4.Linux下MySQL主从同步配置. 5.Mysql之Mycat读写分离.
6.mysql-mycat-中间件安装与使用. 7.mysql 忘记密码,1045错误修改方法