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服务试试看吧