mysql笔记

显示当前MySQL版本和当前日期
mysql> select version(),current_date;
查看MYSQL数据库中所有用户
mysql> SELECT DISTINCT CONCAT(‘User: ”’,user,”’@”’,host,”’;’) AS query FROM mysql.user;
查看数据库中具体某个用户的权限
mysql> show grants for ‘root’@’localhost’;

mysql> select * from mysql.user where user=’root’;

mysql> revoke all on *.* from user1@localhost;
REVOKE语句只能取消用户的权限,而不可以删除用户。即使取消了所有的权限,用户仍然可以连接到服务器。要想彻底的删除用户,必须使用DELETE语句将该用户的记录从MySQL数据库中的user表中删除。
mysql> use mysql;
mysql> delete from user where user=’test’ and host=’localhost’;
mysql> flush privileges;

删除账户及权限:
mysql > drop user 用户名@’%’;
mysql > drop user 用户名@ localhost;

在学习drop方法删除用户时,按照书上讲的一直没操作成功,后来到网上查了点其他资料,才弄明白drop的方法,贴出来和大家分享一下。

(方法一)drop user 用户名;
语法:drop user 用户名;
作用:删除已经存在的用户,例如要删除yan这个用户,(drop user yan;)默认删除的是yan@”%”这个用户,如果还有其他用户,例如yan@”localhost”,yan@”ip”,则不会一起被删除。如果只存在一个用户yan@”localhost”,使用语句(drop user yan;)会报错,应该用(drop user yan@”localhost”;)如果不能确定(用户名@机器名)中的机器名,可以在mysql中的user表中进行查找,user列对应的是用户名,host列对应的是机器名。
(方法二)delete from user where user=”用户名” and host=”localhost”;
delete也是删除用户的方法,例如要删除yan@”localhost”用户,则可以(delete from user where user=”yan” and host=”localhost”;)

注:drop删除掉的用户不仅将user表中的数据删除,还会删除诸如db和其他权限表的内容。而(方法二)只是删除了user表的内容,其他表不会被删除,后期如果命名一个和已删除用户相同的名字,权限就会被继承。

grant all privileges on test_db.user to user1@192.168.1.2 identified by “pass_wd”; //只对test_db 里面的user表有所有权限,密码是pass_wd
grant select on test_db.* to user1@192.168.1.2 identified by “pass_wd”; // 无密码,有查询test_db 权限

命令行修改root密码:
mysql> UPDATE mysql.user SET password=netpassword(‘rootpwd’) WHERE User=’root’ and ‘Host’=’localhost’;
mysql> UPDATE user SET password=PASSWORD(‘sLrs9mHuA7mZxrET’) WHERE user=’root’;
mysql> FLUSH PRIVILEGES;

grant all privileges on mydb.* to NewUserName@HostName identified by ‘password’;
grant usage on *.* to NewUserName@HostName identified by ‘password’;
grant select,insert,update on mydb.* to NewUserName@HostName identified by ‘password’;
grant update,delete on mydb.TestTable to NewUserName@HostName identified by ‘password’;

数据库/数据表/数据列权限:
ALTER: 修改已存在的数据表(例如增加/删除列)和索引。
CREATE: 建立新的数据库或数据表。
DELETE: 删除表的记录。
DROP: 删除数据表或数据库。
INDEX: 建立或删除索引。
INSERT: 增加表的记录。
SELECT: 显示/搜索表的记录。
UPDATE: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录–其它什么也不允许做。

————————-

grant 创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个
MySQL> grant all privileges on *.* to user@localhost identified by `something` with grant option;

增加新用户 格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”
GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ’something’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ’something’ WITH GRANT OPTION;
删除授权:
MySQL> revoke all privileges on *.* from root@”%”;
MySQL> delete from user where user=”root” and host=”%”;
MySQL> flush privileges;

mysql> unlock tables;
mysql> set global read_only=0;

将MySQL从只读设置为读写状态的命令:
创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb
MySQL >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ it363.com identified by ‘passwd’

mysqldump -uroot -ptest110oldboy -B -F –single-transaction eshop_ett100|gzip>$bakpath/eshop_ett100_$(date +%F).sql.gz

要想知道每个数据库的大小的话,步骤如下:
1、进入information_schema 数据库(存放了其他的数据库的信息)
use information_schema;
2、查询所有数据的大小:
select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables;
3、查看指定数据库的大小:
比如查看数据库home的大小
select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables where table_schema=’home’;
4、查看指定数据库的某个表的大小
比如查看数据库home中 members 表的大小
select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables where table_schema=’home’ and table_name=’members’;

mysqlbinlog -vv mysql-bin.000308 > /logs/tmp.log

mysqlbinlog -vv mysql-bin.000308 –stop-position=28464709|grep -C30 aaa > /logs/tmp2.log

/usr/bin/mysqlbinlog –no-defaults -v -v –base64-output=DECODE-ROWS mysql-bin.000061 | grep -A ’10’ 245991746
显示2014-04-01后的update语句,主要做分析时使用。
注: 这条命令中有空格。
# mysqlbinlog –start-datetime=”2014-04-01 00:00:00″ /usr/local/mysql-5.5.30/data/mysql-bin.000012 |grep -E “update |use “
/usr/local/mysql/bin/mysqlbinlog –start-datetime=”2017-08-27 07:00:00″ –stop-datetime=”2017-08-27 20:30:80″ /usr/local/mysql-5.5.30/data/mysql-bin.000012

mysql -e “show databases;” -uroot -p123456 | grep -Ev “Database|information_schema|performance_schema|zabbix|test” | xargs mysqldump -uroot -p123456 –databases –single-transaction –master-data=2 -R –triggers -E –flush-logs > ./mysql_dump.sql

select * from mysql.user where host in (‘x.x.x.x’,’y.y.y.y’)

1.查看正在被锁定的的表
show OPEN TABLES where In_use > 0;
查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

select * from information_schema.’PROCESSLIST'(show processlist;);

Print Friendly

发表评论

电子邮件地址不会被公开。 必填项已用*标注