創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE chapter08;
選擇數(shù)據(jù)庫
USE chapter08;
創(chuàng)建數(shù)據(jù)表
CREATE TABLE student(
id int primary key auto_increment,
name varchar(20),
age int
);
插入數(shù)據(jù)
INSERT INTO student(name,age) VALUES
('Tom',20),
('Jack',16),
('Lucy',18);
使用SELECT語句查詢表
SELECT * FROM student;
數(shù)據(jù)備份與還原
數(shù)據(jù)的備份
1. 備份單個(gè)數(shù)據(jù)庫
需要注意的是台夺,在使用mysqldump命令備份數(shù)據(jù)庫時(shí),直接在命令行中執(zhí)行命令即可痴脾,不需要登錄到MySQL數(shù)據(jù)庫颤介。
mysqldump -uroot -p666666 chapter08 > chapter08.sql
備份文件中會(huì)包含mysqldump的版本號(hào)、MySQL的版本號(hào)赞赖、主機(jī)名稱滚朵、備份的數(shù)據(jù)庫名稱前域,以及一些SET語句、CREATE語句匿垄、INSERT語句、注釋信息等年堆。其中以“--”字符開頭的都是SQL的注釋;以“/!”開頭变丧、“/”結(jié)尾的語句都是可執(zhí)行的MySQL注釋芽狗,這些語句可以被MySQL執(zhí)行,但在其他數(shù)據(jù)庫管理系統(tǒng)中將被作為注釋忽略痒蓬,這可以提高數(shù)據(jù)庫的可移植性童擎。
需要注意的是,以“/!40101”開頭攻晒、“/”結(jié)尾的注釋語句中顾复,40101是MySQL數(shù)據(jù)庫的版本號(hào),相當(dāng)于MySQL 4.1.1鲁捏,在還原數(shù)據(jù)時(shí)芯砸,如果當(dāng)前MySQL的版本比MySQL 4.1.1高,“/!40101”和“/”之間的內(nèi)容就被當(dāng)作SQL命令來執(zhí)行,如果比當(dāng)前版本低,“/吓揪!40101”和“/”之間的內(nèi)容就被當(dāng)作注釋。
2.備份多個(gè)數(shù)據(jù)庫
mysqldump -uroot -p666666 --database chapter07 chapter08 > web.sql
上述語法中渔期,“--database”參數(shù)后面至少應(yīng)該指定一個(gè)數(shù)據(jù)庫名稱,如果有個(gè)數(shù)據(jù)庫渴邦,則名稱之間用空格隔開
3. 備份所有數(shù)據(jù)庫
使用mysqldump命令備份所有數(shù)據(jù)庫時(shí)疯趟,只需在該命令后使用“--all-databases”參數(shù)即可。
mysqldump -uroot -p666666 --all-database > web2.sql
數(shù)據(jù)的還原
1. 刪除數(shù)據(jù)庫
DROP DATABASE chapter08;
2. 創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE chapter08;
3. 還原數(shù)據(jù)
mysql -uroot -p666666 chapter08 < chapter08.sql
4. 查看數(shù)據(jù)
SELECT * FROM student;
5. 使用用source命令還原數(shù)據(jù)
登錄到MySQL數(shù)據(jù)庫谋梭,使用source命令來還原數(shù)據(jù)信峻。
source chapter08;
用戶管理
user表
- 用戶列
- 權(quán)限列
- 安全列
- 資源控制列
查看數(shù)據(jù)庫是否支持ssl加密
SHOW VARIABLES LIKE 'have_openssl';
如果have_openssl的取值為DISABLED,則表示不支持加密章蚣。
創(chuàng)建普通用戶
查看mysql.user表中有哪些用戶
SELECT host,user,password FROM user;
1. 使用GRANT語句創(chuàng)建用戶
GRANT語句不僅可以創(chuàng)建新用戶站欺,還可以對(duì)用戶進(jìn)行授權(quán),該語句會(huì)自動(dòng)加載權(quán)限表纤垂,不需要手動(dòng)刷新矾策,而且安全、正確峭沦、錯(cuò)誤少贾虽,因此使用GRANT語句時(shí)創(chuàng)建用戶最常用的方法。
使用GRANT語句創(chuàng)建一個(gè)新用戶吼鱼,用戶名為user1蓬豁、密碼為123,并授予該用戶對(duì)chapert08.student表有查詢權(quán)限
GRANT SELECT ON chapter08.student TO 'user1'@'localhost' IDENTIFIED BY '123';
2. 使用CREATE USER語句創(chuàng)建用戶
使用CREATE USER語句創(chuàng)建新用戶時(shí)菇肃,服務(wù)器會(huì)自動(dòng)修改相應(yīng)的授權(quán)表地粪,但需要注意的是,該語句創(chuàng)建的新用戶是沒有任何權(quán)限的琐谤。
使用CREATE USER語句創(chuàng)建一個(gè)新用戶蟆技,用戶名為user2、密碼為123斗忌。
CREATE USER 'user2'@'localhost' IDENTIFIED BY '123';
3. 使用INSERT語句創(chuàng)建用戶
需要注意的是,使用INSERT語句創(chuàng)建用戶時(shí)眶蕉,通常只需要添加Host造挽、User和Password這三個(gè)字段即可,其他的字段取其默認(rèn)值刽宪,但由于ssl_cipher界酒、x509_issuer、x509_subject字段時(shí)沒有默認(rèn)值的庇谆,因此INSERT語句創(chuàng)建用戶時(shí)饭耳,還需要為這幾個(gè)字段設(shè)置初始值执解。
使用INSERT語句直接在mysql.user表中創(chuàng)建一個(gè)新用戶,用戶名為user3新蟆、密碼為123琼稻。
INSERT INTO mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) VALUES ('localhost','user3',PASSWORD('123'),'','','');
為了讓user3用戶生效饶囚,還需要手動(dòng)刷新當(dāng)前的權(quán)限表或重新啟動(dòng)MySQL服務(wù)萝风。
FLUSH PRIVILEGES;
刪除普通用戶
1. 使用DROP USER語句刪除用戶
DROP USER語句可以同時(shí)山粗多個(gè)用戶,多個(gè)用戶之間用逗號(hào)隔開睬塌。
使用DROP USER語句刪除用戶user1
DROP USER 'user1'@'localhost';
2. 使用DELETE語句刪除用戶
使用 DELETE語句刪除用戶user2
DELETE FROM mysql.user WHERE Host='localhost' AND User='user2';
由于直接對(duì)user表進(jìn)行操作衫仑,執(zhí)行完命令后需要使用“FLUSH PRIVILEGES;”語句重新加載用戶權(quán)限堕花。
修改用戶密碼
1. 修改root用戶密碼
1)使用mysqladmin命令修改root用戶密碼
mysqladmin -u root -p password 111111
需要注意的時(shí)缘挽,上面提示輸入密碼呻粹,是指root用戶的舊密碼等浊,密碼輸入正確后摹蘑,該語句執(zhí)行完畢衅鹿,root用戶的密碼被修改,下次登錄時(shí)使用新的密碼即可制妄。
2)使用UPDATE語句修改root用戶密碼
UPDATE mysql.user set Password=PASSWORD('666666') WHERE User='root' AND Host='localhost';
上述語句執(zhí)行成功后泵三,還需要使用FLUSH PRIVILEGES重新加載權(quán)限表,然后就可以使用新密碼登錄MySQL數(shù)據(jù)庫了
3)使用SET語句修改root用戶的密碼
SET PASSWORD=PASSWORD('111111');
2. root用戶修改普通用戶的密碼
1)使用GRANT語句修改普通用戶密碼
通常情況下俺抽,為了不影響當(dāng)前用戶的權(quán)限凌埂,可以使用CRANT USAFE 語句修改指定賬戶的密碼诗芜。
GRANT USAFE ON . TO 'user3'@'localhost' IDENTIFIED BY '666666';
2)使用UPDATE語句修改普通用戶的密碼
UPDATE mysql.user SET Password=PASSWORD('123') WHERE User='user3' AND Host='localhost';
需要注意的是伏恐,使用上述語句修改完普通用戶的密碼后,還需要使用FLUSH PRIVILEGES語句重新加載權(quán)限表横蜒。
3)使用SET語句修改普通用戶的密碼
在修改普通用戶密碼時(shí)销凑,還需要增加一個(gè)FOR子句,指定要修改哪個(gè)用戶即可澎蛛。
SET PASSWORD FOR 'user3'@'localhost'=PASSWORD('111111');
3. 普通用戶修改密碼
普通用戶登錄到MySQL服務(wù)器后谋逻,可以通過SET語句來設(shè)置自己的密碼
SET PASSWORD=PASSWORD('111111');
權(quán)限管理
MySQL的權(quán)限
MySQL中的權(quán)限信息被存儲(chǔ)在MySQL數(shù)據(jù)庫的user、db毁兆、host气堕、tables_priv、column_priv和procs_priv表中摹菠,當(dāng)MySQL啟動(dòng)時(shí)會(huì)自動(dòng)加載這些權(quán)限信息骗爆,并將這些權(quán)限信息讀取到內(nèi)存中。
授予權(quán)限
使用GRANT語句創(chuàng)建一個(gè)新用戶摘投,用戶名為user4虹蓄,密碼123,user4用戶對(duì)所有數(shù)據(jù)庫有INSERT外臂、SELECT權(quán)限律胀,并使用WITH GRANT OPTION子句。
GRANT INSERT,SELECT ON . TO 'user4'@'localhost' IDENTIFIED BY '123' WITH GRANT OPTION;
查詢user表中的用戶權(quán)限
SELECT Host,User,Password,Insert_priv,Select_priv,Grant_priv FROM mysql.user WHERE user='user4' \G
查看權(quán)限
使用SHOW GRANTS語句查詢r(jià)oot用戶的權(quán)限
SHOW GRANTS FOR 'root'@'localhost';
使用SHOW GRANTS語句罪佳,查詢user4用戶的權(quán)限信息
SHOW GRANTS FOR 'user4'@'localhost';
收回權(quán)限
使用REVOKE語句收回user4用戶的INSERT權(quán)限
REVOKE INSERT ON . FROM 'user4'@'localhost';
查看權(quán)限
SELECT Host,User,Password,Insert_priv FROM mysql.user WHERE user='user4' \G
使用REVOKE語句收回user4的所有權(quán)限
REVOKE ALL PRIVILEGES,GRANT OPTION FROM 'user4'@'localhost';
查看權(quán)限
SELECT Host,User,Password,Insert_priv,Select_priv,Grant_priv from mysql.user where user='user4' \G