修复表一直在使用中
CHECK TABLE `table1`; ANALYZE TABLE `table1`; REPAIR TABLE `table1`;
开启bin日志,会记录一些操作日志
log-bin=mysql-bin
查看mysql-bin.00001
mysqlbinlog mysql-bin.00001
分割binlog日志
mysqladmin -u root -p123456 -S /data/3306/data/mysqld.sock flush-log
可以把日志导出
mysql-bin.00001 > /home/bin00001.sql
然后先把数据库备份 编辑删除操作失误的命令导入
mysqlbinlog --no-defaults --base64-output=decode-rows -v --start-datetime="2019-11-25 00:00:00" --stop-datetime="2019-11-26 00:10:01" binlog.000026
常用mysql备份脚本
#!/bin/bash find /data/bakmysql -mtime +7|xargs rm -rf fulltm=`date +%y%m%d%H%M` for i in `mysql -uroot -p'password' -NBe "show databases;"|grep -v schema|grep -v mysql|grep -v ini|grep -v performance|grep -v gm` do mysqldump -uroot -p'123456789' --master-data=2 $i > /data/bakmysql/${i}_${fulltm}.sql done
mysql -u 用户名 -p 密码 -h 服务器IP地址 -P 服务器端MySQL端口号 -D 数据库名 -e 执行命令
mysqladmin variables -p 获取数据库信息 show variables like 'character_set%'; 查看数据库字符集 mysqladmin shutdown linux下关闭mysql的命令 show grants for root@'localhost'; 查看用户权限 WITH GRANT OPTION; 赋予授权 select user,host,password from mysql.user order by user asc; 排序asc升序,desc倒序 reset master; #重置所有的日志
更改密码
use mysql; UPDATE user SET Password=PASSWORD('252823') where USER='root'; flush privileges; mysqladmin -uroot -p旧密码 password 新密码
查看用户所有数据库,选择数据库查看所有表
desc 表名; show processlist; show databases; show tables; select * from tablename; select * from tablename where id='52'; select * from tablename where id like '52'; update abc set ef="god" where id='1'; status;查看当前状态 select database();查看当前数据库 select version();数据库版本 select user();当前用户 select now();当前时间 select * from table order by uid desc limit 0,10;
mysql授权添加用户
grant all PRIVILEGES on db.* to user@'%' identified by 'password'; flush privileges; 授权用户拥有授权权限 grant all PRIVILEGES on db.* to user@'%' identified by 'password WITH GRANT OPTION;
清除权限(但不会删除数据库用户)
revoke all privileges on *.* from user@'%';
查看用户
select user,host,password from mysql.user;
删除用户和空用户(默认随机用户都可以登录)
delete from user where user = "user" and host = "%"; DELETE FROM mysql.user WHERE user=''; FLUSH PRIVILEGES;
清空表内容
truncate table tablename;
查看数据库大小
1.查看数据库的大小
use 数据库名
SELECT sum(DATA_LENGTH)+sum(INDEX_LENGTH) FROM information_schema.TABLES where TABLE_SCHEMA='数据库名'; sELECT sum(DATA_LENGTH+INDEX_LENGTH)/1024/1024 FROM information_schema.TABLES where TABLE_SCHEMA='s888';
得到的结果是以字节为单位,除1024为K,除1048576为M。
2.查看表的最后mysql修改时间
select TABLE_NAME,UPDATE_TIME from INFORMATION_SCHEMA.tables where TABLE_SCHEMA='数据库名';
可以通过查看数据库中表的mysql修改时间,来确定mysql数据库是否已经长期不再使用。
3.查看数据库中各个表占用的空间大小
如果想知道MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES 表,这个表主要字段分别是:
TABLE_SCHEMA : 数据库名
TABLE_NAME:表名
ENGINE:所使用的存储引擎
TABLES_ROWS:记录数
DATA_LENGTH:数据大小
INDEX_LENGTH:索引大小
其他字段请参考MySQL的手册,我们只需要了解这几个就足够了。
所以要知道一个表占用空间的大小,那就相当于是 数据大小 + 索引大小 即可。
SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS FROM TABLES WHERE TABLE_SCHEMA='数据库名' AND TABLE_NAME='表名' sELECT sum(DATA_LENGTH+INDEX_LENGTH)/1024/1024 FROM information_schema.TABLES where TABLE_SCHEMA='s888' AND TABLE_NAME='user';
4.查看表的最后mysql修改时间
select TABLE_NAME,UPDATE_TIME from INFORMATION_SCHEMA.tables where TABLE_SCHEMA='数据库名';
可以通过查看数据库中表的mysql修改时间,来确定mysql数据库是否已经长期不再使用。
额 本文暂时没人评论 来添加一个吧
发表评论