13.4 mysql用户管理

13.5 常用sql语句

13.6 mysql数据库备份恢复

13.4 MySQL用户管理

MySQL创建用户以及授权

mysql -uroot -p
grant all on *.* to 'user1'@'127.0.0.1' identified by '1234a';   //第一个*为库,第二个*为表
quit
mysql -uuser1 -p1234a -h127.0.0.1
[ctrl-d]
mysql -uroot p
grant all on *.* to 'user1' identified by '1234a';
exit
mysql -uuser1 -p1234a -h试试看
还可以:
grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.83.1' identified by 'passwd';
grant all on db1.* to 'user3'@'%' identified by 'passwd'; 

show grants; 查看当前用户权限
show grants for user1@127.0.0.1;
show grants for user2@192.168.83.1; 两行可以用于迁移用户IP,两行改IP执行下,原密码会保留

13.5 常用sql语句

开发,DBA需要深入掌握,但是作为系统管理员,基本的得会!

select 查

select count(*) from mysql.user;  查mysql库的user表有多少行
 select * from mysql.db;  查mysql.db所有内容
 select db from mysql.db; 查mysql.db的db字段
 select db,user from mysql.db; 查看mysql.db的多个字段
 select * from mysql.db where host like '192.168.%';  模糊查询

insert 插入

insert into db1.t1 values (1, 'abc');  插入数据
 desc db1.t1查看表字段结构,明确插入字符格式

update 修改

update db1.t1 set name='aaa' where id=1;

删除,小心用

delete from db1.t1 where id=1  //删除id表头字段下,=1的行
 truncate table db1.t1;  //清空表内容,字段表头保留
 drop table db1.t1;    //删除表
 drop database db1;   //删除库
  • 常用数据引擎 myisam innodb
  • 自带的mysql库就是myisam引擎
  • use mysql;
  • show create table uesr\G;
  • 查看count(*)非常快
  • 查看innodb的引擎
  • use db1;
  • show create table t1;
  • 查看count(*)很慢,对大表慎用

13.6 MySQL数据库备份恢复

备份库 mysqldump -uroot -p123456 mysql > /tmp/mysql.sql 恢复库 mysql -uroot -p123456 mysql < /tmp/mysql.sql 备份表 mysqldump -uroot -p123456 mysql user > /tmp/user.sql 恢复表 mysql -uroot -p123456 mysql < /tmp/user.sql 备份所有库 mysqldump -uroot -p -A >/tmp/123.sql 只备份表结构 mysqldump -uroot -p123456 -d mysql > /tmp/mysql.sql

MySQL空密码用户清理

假设你想管理下用户,只记得某个库里的某个表管理用户的登录,你需要这么做:

  • 前提是有足够权限的账户,没有就skip刷root密码吧
  • 还得知道某个库下的某个表里的某个字段,管理着用户的登录相关的信息
[root@axiang-02 ~]# mysql -uroot -p
Enter password:

mysql> show databases;   //查所有库的名字
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |    //你看到mysql库,想起来就这个库里,但是不知道查那个表
| performance_schema |
| test               |
+--------------------+

mysql> use mysql;    //选择mysql库
mysql> show tables;    //查mysql里面的所有表
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |    //你看到user表,想起来应该在这里,但是不知道查那个字段
+---------------------------+

mysql> desc user;    //查看所有user下的字段名(表头)
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(16)                          | NO   | PRI |                       |       |
| Password               | char(41)                          | NO   |     |                       |       |
看到这里你想起来,需要了解user,host,password这三个字段
mysql> select user,host,password from mysql.user;    //查看这三个字段的内容
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *8E1A3402D66F8DDD8D9D19596B706C6D238C0F34 |
| root | axiang-02 |                                           |
| root | 127.0.0.1 |                                           |
| root | ::1       |                                           |
|      | localhost |                                           |
|      | axiang-02 |                                           |
+------+-----------+-------------------------------------------+
看到这里,你发现任意用户名不需要密码就可以登录。需要删掉。删东西前要备份

[root@axiang-02 ~]# mysqldump -uroot -paxianglinux mysql user > /tmp/user.sql

mysql> delete from mysql.user where password='';    //删掉
mysql> select user,host,password from mysql.user;    //再看
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *8E1A3402D66F8DDD8D9D19596B706C6D238C0F34 |
+------+-----------+-------------------------------------------+

重启mysql服务试试看吧