1. mysql用户管理
mysql默认有一个root超级管理员账户,实际工作环境中不可能每个人都用此root权限,防止误操作、误删除,可以给单独的用户进行授权。
Mysql创建用户以及授权:
grant all on *.* to 'user1' identified by 'passwd';
其中,all表示所有权限(如读、写、查询、删除等操作); .有两个*,前者表示所有数据库,后者表示所有的表;identified by后面跟密码,用单引号括起来。这里的user1指localhost上的user1。如果是给网络其他机器上的某个用户授权,则需要执行如下命令:
grant all on db1.* to 'user2'@'172.20.4.171' identified by '123456';
其中,用户和主机的ip之间有个符号@,另外,命令中主机ip可以用%替代,表示所有主机,如下命令:
grant all on db1.* to 'user3'@'%' identified by '123456';
可以根据具体的权限授权:
grant SELECT,UPDATE,INSERT on db1.* to 'user4'@'127.0.0.1' identified by '123456';
主机ip 127.0.0.1表示只能在mysql服务器上使用该用户。
• show grants;
• show grants for user2@192.168.133.1;
show grants;命令平时用的不多,当给用户新增授权时可以直接复制里面的显示,然后更改来源ip,密码并不影响。
扩展:
撤销已经赋予给 MySQL 用户权限的权限。
revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:
revoke all on *.* from 'root'@'192.168.0.197' ;
REVOKE语句只能取消用户的权限,而不可以删除用户。即使取消了所有的权限,用户仍然可以连接到服务器。要想彻底的删除用户,必须使用DELETE语句将该用户的记录从MySQL数据库中的user表中删除。该语句的语法格式如下:
Delete from user where user = "user_name" and host = "host_name" ;
例子:
use mysql;
delete from user where user='sss' and host='localhost' ;
flush privileges ;
最后再次查看一下授权用户,发现消失了
select user,host from mysql.user; //查看mysql用户和host
2. 常用sql语句
查询语句:
1. select count(*) from mysql.user;
其中,mysql.user表示MySQL库中的user表,count(*)表示表中共有多少行。
2. select * from mysql.db;
它表示查询mysql库的db表中的所有数据。当然也可以查询单个字段或者多个字段,如下所示
select db from mysql.db;
select db,user from mysql.db;
同样查询的语句中也可以使用万能匹配符%,如下所示:
select * from mysql.db where host like '192.168.%';
插入一行:
插入操作在mysql中也很普遍,如下所示:
insert into db1.t1 values (1, 'abc');
select * from db1.t1;
更改表的某一行:
mysql表里存放的数据支持更改某个字段,如下所示:
update db1.t1 set name='aaa' where id=1;
清空某个表的数据:
有时我们不希望删除表,而只是想清空某个表的数据,如下所示:
truncate table db1.t1;
清空表内容,表结构还在
删除表:
drop table db1.t1;
删除数据库:
• drop database db1;
3. mysql数据备份恢复
备份库:
备份mysql要使用mysqldump命令,具体用法如下:
mysqldump -uroot -p123456 mysql > /tmp/mysql.sql
其中,-u和-p两个选项的使用方法和前面介绍的一样;后面的mysql指的是库名,然后重定向到一个文本文档里。备份做完后,你可以查看/tmp/mysql.sql这个文件的内容。
恢复库:
mysql -uroot -p123456 mysql < /tmp/mysql.sql
可以恢复到新建的库中测试,看看表以及表里的内容是否一致
备份表:
mysqldump -uroot -p123456 mysql user > /tmp/user.sql
less /tmp/user.sql 查看备份的文件发现恢复时会先查看是否有这个表,如果有则删除重新创建表,然后在insert数据
恢复表:
mysql -uroot -p123456 mysql < /tmp/user.sql
备份所有库:
mysqldump -uroot -p123456 -A >/tmp/123.sql
-A选项备份所有的库
备份文件中搜索Current Database:可以看到有哪些库
只备份表结构:
mysqldump -uroot -p123456 -d mysql > /tmp/mysql.sql