技术分享
MySQL用户管理、常用sql语句、mysql数据库备份恢复
2021-05-17
五十三、MySQL用户管理、常用sql语句、mysql数据库备份恢复
一、MySQL用户管理
(一)MYSQL创建用户及授权
# mysql -uroot -p12345
mysql> grant all on *.* to 'user1'@'127.0.0.1' identified by '13579';
//这个grant语句不会记录到命令历史,因为不安全。
grant:授权;
all:所有权限,查看,创建,删除等;
前面的*:库名,可以写成mysql.*,就是对mysql所有的表,*.*就是所有;
'user1':用户;
'127.0.0.1':指定用户只能通过这个IP来登录,来源IP,可以写成%,就是通配,所有IP都可以;
identified by:指定它的密码。
# mysql -uuser1 -p13579 测试,登录不进,因为它默认使用的是sock
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'user1'@'localhost' (using password: YES)
# mysql -uuser1 -p13579 -h127.0.0.1
//指定它的来源IP,就登录上了,因为授权的对象是这个127.0.0.1。
授权localhost(本地):# mysql -uroot -p12345
mysql> grant all on *.* to 'user1'@'localhost' identified by '13579';
把127.0.0.1改成localhost,重新授权。
# mysql -uuser1 -p13579
//这下不加-h也能登录了,因为localhost针对的就是sock。
grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.93.130' identified by 'password';
//针对db1这个库的所有表。
grant all on db1.* to 'user3'@'%' identified by 'password';
//db1这个库的所有表,所有IP都可以登录user3。
show grants; 查看所有授权;
show grants for user1@127.0.0.1; 这么写查看指定用户的授权。
show grants for user2@192.168.93.130;
+-------------------------------------------------------------------------------------------------------------------+
| Grants for user2@192.168.93.130 |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user2'@'192.168.93.130' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
| GRANT SELECT, INSERT, UPDATE ON `db1`.* TO 'user2'@'192.168.93.130' |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
//当你不仅需要在93.130上登,还要在93.131上登的时候,就要把授权再全部做一遍,就是把上面标红的语句复制把93.130改成93.131即可。
mysql> GRANT USAGE ON *.* TO 'user2'@'192.168.93.131' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
-> ;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT SELECT, INSERT, UPDATE ON `db1`.* TO 'user2'@'192.168.93.131'
-> ;
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for user2@192.168.93.131;
+-------------------------------------------------------------------------------------------------------------------+
| Grants for user2@192.168.93.131 |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user2'@'192.168.93.131' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
| GRANT SELECT, INSERT, UPDATE ON `db1`.* TO 'user2'@'192.168.93.131' |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
当输错了命令或者要退出一个界面,输入分号;再回车即可退出。
二、常用sql语句
select:查看
select count(*) from mysql.user;
count (*):查找后面这个表的行数;
select * from mysql.db;
//这个操作不建议这么用,如果这个表里很多内容就会很耗时耗资源,也很慢。
select db from mysql.db;
//这里前面的db是个字段,下面这句是两个字段也可以,用逗号隔开。
select db,user from mysql.db;
select * from mysql.db where host like '192.168.%'\G;
//模糊查询,like:模糊匹配。
insert:插入
insert into db1.t1 values (1,'abc');
//id=1,name=abc,这个abc是字符串,要加上单引号,纯数字可以不加
mysql> select * from db1.t1;
+------+------+
| id | name |
+------+------+
| 1 | abc |
+------+------+
1 row in set (0.00 sec)
update:更改
update db1.t1 set name='aaa' where id=1;
update db1.t1 set id=2 where name='aaa'; 反向改id
mysql> select * from db1.t1;
+------+------+
| id | name |
+------+------+
| 1 | aaa |
| 1 | aaa |
| 1 | aaa |
+------+------+
3 rows in set (0.00 sec)
//3行更改
truncate和drop尽量少做,执行前一定要谨慎。
truncate:清空
truncate table db1.t1; 清空表内数据
drop:删除
delete from db1.t1 where id=2; 删除这个表内id=2的内容
drop table db1.t1; 删除表
drop database db1; 删除数据库
三、mysql数据库备份恢复
备份库 mysqldump -uroot -p12345 mysql > /tmp/mysqlbak.sql
恢复库 mysql -uroot -p12345 mysql < /tmp/mysqlbak.sql
# mysql -uroot -p12345 -e "create database mysql2";
//创建个mysql2的数据库
# mysql -uroot -p12345 mysql2 < /tmp/mysqlbak.sql
# mysql -uroot -p12345 mysql2 这样连接进去的就是mysql2这个数据库
备份表 mysqldump -uroot -p12345 mysql user > /tmp/user.sql
//库后面写个表名字
恢复表 mysql -uroot -p12345 mysql < /tmp/user.sql
//恢复时只要写库名即可
备份所有库 mysqldump -uroot -p -A > /tmp/123.sql
# mysqldump -uroot -p12345 -A > /tmp/mysql_all.sql
-A:all
只备份表结构 mysqldump -uroot -p12345 -d mysql > /tmp/mysql.sql
# mysqldump -uroot -p12345 -d mysql2 > /tmp/mysql2.sql
- 标签:
-
其他