2018.3.23 13周5次課
13.4 mysql用戶管理
13.5 常用sql語句
13.6 mysql數據庫備份恢復
13.4 mysql用戶管理
MySQL創建用戶以及授權
授權給ip
grant all on *.* to 'user1'@'127.0.0.1' identified by 'passwd';
all表示所有的權限(如讀、寫、查詢、刪除等操作);on:後面跟的數據庫名;有2個*,前者表示所有的數據庫,後者表示所有的表;to:授權給後面的用戶;user1:用戶名;@'127.0.0.1':來源ip,如果是本機的話可以不用寫,@後面可以寫%,表示通配,所有的ip;identified by後面跟密碼,用單引號括起來。
grant all on *.* to 'user1'@'127.0.0.1' identified by '123456a';
測試user1能否登陸:
退出mysql
mysql -uuser1 -p123456a
報錯無法登陸,這是因為登陸方式是采用默認的sock方式,前面創建用戶時我們授權的對象是127.0.0.1,所以這裏需要-h指定ip的登陸方式
mysql -uuser1 -p123456a -h127.0.0.1
授權給localhost:
登陸mysql:mysql -uroot -paminglinux
mysql -uroot –paminglinux
如果命令打錯了用分號退出
grant all on *.* to 'user1'@'localhost' identified by '123456a'; //等同grant all on *.* to 'user1' identified by '123456a';
退出mysql,再次登陸
可以對具體的權限授權:
grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.37.1' identified by 'passwd';
針對所有的ip授權:
grant all on db1.* to 'user3'@'%' identified by 'passwd';
查看所有的授權:
show grants; //看的是root用戶
查看指定用戶的授權:
show grants for user1@'127.0.0.1';
grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.37.1' identified by 'passwd';
同一用戶要登陸到另一IP地址,用戶授權相同該如何操作:
方法:把授權的命令在另一IP(192.168.37.10)地址上全部執行一遍
根據上圖user2的授權命令,修改下ip執行,有幾條就執行幾條
GRANT USAGE ON *.* TO 'user2'@'192.168.37.10' IDENTIFIED BY PASSWORD '*59C70DA2F3E3A5BDFF46B68F5C8B8F25762BCCEF0';
GRANT SELECT, INSERT, UPDATE ON `db1`.* TO 'user2'@'192.168.37.10';
show grants for user2@'192.168.37.10';
13.5 常用sql語句
查詢語句:可以在一個庫中查詢另一個庫的數據,盡量不要進行查詢包含*的操作
select count(*) from mysql.user; //查詢mysql庫中user表的行數
select * from mysql.db\G; //查看mysql庫中db表的全部數據
關於數據庫引擎目前常用的有2種:myisam和innodb
查看mysql庫的引擎,默認所有的表都用myisam引擎,myisam會自動統計行數
use mysql;
show create table user\G;
查看db1庫引擎,默認是innodb,不會自動統計行數
use db1;
show create table t1\G;
select db from mysql.db; //查詢db字段
select db,user from mysql.db; //查詢多個字段
select * from mysql.db where host like '192.168.%'\G; //模糊查詢,用like
插入語句:
desc db1.t1; //t1表為空
insert into db1.t1 values (1, 'abc'); //t1表插入數據,第二個字段數據類型是字符串,所以abc要加上單引號
更改語句:
update db1.t1 set name='aaa' where id=1;
刪除字段數據:
delete from db1.t1 where id=1;
清空表的數據:
truncate table db1.t1; //清空表的內容,表的結構還在;drop是數據和結構都刪除
刪除表:
drop table t1;
刪除數據庫:
drop database db1;
13.6 mysql數據庫備份恢復
mysqldump命令
備份庫:
mysqldump -uroot -paminglinux mysql > /tmp/mysqlbak.sql //-u和-p兩個選項的使用方法和前面介紹的一樣;後面的mysql指的是庫名,然後重定向到一個文本文檔裏。備份做完後可以查看/tmp/mysqlba這個
文件裏的內容
恢復庫:
mysql -uroot -paminglinux -e "create database mysql2" //建立一個新庫
mysql -uroot -paminglinux mysql2 < /tmp/mysqlbak.sql //恢復到mysql2庫
mysql -uroot -paminglinux mysql2 //進入mysql2數據庫
select database(); //查詢當前數據庫是mysql2
show tables; //和mysql庫一樣
備份表 :在庫名後加上表的名字就可以了
mysqldump -uroot -paminglinux mysql user > /tmp/user.sql
恢復表:只要寫庫名就可以了
mysql -uroot -paminglinux mysql < /tmp/user.sql
less /tmp/user.sql //查看備份表user.sql
備份所有庫:用-A選項
mysqldump -uroot -paminglinux -A >/tmp/mysql_all.sql
只備份表結構:用-d選項,後面指定數據庫名
mysqldump -uroot -paminglinux -d mysql2 > /tmp/mysql2.sql
2018.3.23 13周5次課