MySQL<數據庫的高級操作>
數據庫的高級操作
MySQL提供了一個mysqldump命令,它可以實現數據的備份
數據的備份
1、備份單個數據庫
mysqldump -uusername -ppassword dbname [tbname1 [tbname2…]]>filename.sql
2、備份多個數據庫
mysqldump –uusername –ppassword -–database dbname1 [dbname2 dbname3…]
>filename.sql
3、備份所有數據庫
mysqldump –uusername –ppassword -–all-databases>filename.sql
數據的還原
數據庫中的數據遭到破壞時,可以通過備份好的數據文件對數據進行還原,這裏所說的還原是指還原數據庫中的數據,而庫是不能被還原的。
mysql –uusername –ppassword [dbname] <filename.sql
1、首先需要使用DROP語句將數據庫chapter08刪除
DROP DATABASE chapter08;
2、由於庫是不能被還原的,因此先要創建一個數據庫chapter08
CREATE DATABASE chapter08;
3、使用mysql語句還原C:/backup目錄下的chapter08_20140305.sql文件
mysql -uroot -pitcast chapter08 <C:/backup/chapter08_20140305.sql
4、為了驗證數據已經還原成功,可以使用SELECT語句查詢chapter08中的數據SELECT * FROM student;
用戶管理
user表
user表是最重要的一個權限表,它記錄了允許連接到服務器的賬號信息以及一些全局級的權限信息。
user表中有42個字段,大致可分為4類用戶列、權限列、安全列、資源控制列
創建普通用戶
1、使用GRANT語句創建用戶,是創建用戶最常用的方法
GRANT privileges ON database.table
TO ‘username‘@‘hostname‘ [IDENTIFIED BY [PASSWORD]‘password‘]
[,‘username‘@‘hostname [IDENTIFIED BY [PASSWORD]‘password‘]] …
2、使用CREATE USER語句創建用戶
CREATE USER ‘username‘@‘hostname‘[IDENTIFIED BY [PASSWORD]‘password‘]
[,‘username‘@‘hostname‘[IDENTIFIED BY [PASSWORD]‘password‘]]…
3、使用INSERT語句創建用戶
INSERT INTO mysql.user(Host,User,Password,ssl_cipher、x509_issuer、x509_subject)
VALUES(‘hostname‘,‘username‘,PASSWORD(‘password‘),‘‘,‘‘,‘‘);
刪除普通用戶
1、使用DROP USER語句刪除用戶
DROP USER ‘username‘@‘hostname‘[,‘username‘@‘hostname‘];
2、使用DELETE語句刪除用戶
DELETE FROM mysql.user WHERE Host=‘hostname‘ AND User=‘username‘;
修改用戶密碼
root用戶修改root用戶密碼
1、使用mysqladmin命令修改
mysqladmin –u username [–h hostname] –p password new_password
2、使用UPDATE語句修改
UPDATE mysql.user set Password=PASSWORD(‘new_password‘)
WHERE User=‘username‘ and Host=‘hostname‘;
3、使用SET語句修改
SET PASSWORD=PASSWORD(‘new_password‘);
root用戶修改普通用戶密碼
1、使用GRANT USAGE語句修改
GRANT USAGE ON *.* TO ‘username‘@‘localhost‘ IDENTIFIED BY [PASSWORD]‘new_password‘;
2、使用UPDATE語句修改
UPDATE mysql.user set Password=PASSWORD(‘new_password‘) WHERE User=‘username‘ and Host=‘hostname‘;
3、使用SET語句修改
SET PASSWORD=PASSWORD(‘new_password‘);
普通用戶修改密碼
SET PASSWORD=PASSWORD(‘new_password‘);
如何解決root用戶密碼丟失問題
停止MySQL服務
net stop mysql
使用--skip-grant-tables啟動MySQL服務
mysql --skip-qrant-tables
登錄MySQL服務器
重新開啟一個運行對話框,在運行對話框中登錄MySQL服務器,具體命令如下:
mysql -u root
使用UPDATE語句設置root用戶密碼
UPDATE mysql.user SET Password=PASSWORD(‘itcast‘) WHERE User=‘root‘ AND Host=‘localhost‘;
加載權限表
FLUSH PRIVILEGES;
上述步驟執行完,可以使用EXIT或\q命令退出服務器,然後使用新密碼重新登錄。至此,便完成了root用戶的密碼設置。
權限管理
MySQL的權限
MySQL中的權限信息被存儲在mysql數據庫的user、db、host、tables_priv、column_priv和procs_priv表中,當MySQL啟動時會自動加載這些權限信息,並將這些權限信息讀取到內存中。
授予權限
我們之所以可以對數據進行增刪改查的操作,是因為數據庫中的用戶擁有不同的權限,合理的授權可以保證數據庫的安全。
GRANT privileges [(columns)][,privileges[(columns)]] ON database.table
TO ‘username‘@‘hostname‘ [IDENTIFIED BY [PASSWORD]‘password‘]
[,‘username‘@‘hostname‘ [IDENTIFIED BY [PASSWORD]‘password‘]] …
[WITH with_option [with_option]…]
privileges:表示權限類型。
columns:參數表示權限作用於某一列,該參數可以省略不寫,此時權限作用於整個表,username:表示用戶名。
hostname表示主機名。
IDENTIFIED BY:參數為用戶設置密碼。
PASSWORD參數為關鍵字.
password為用戶的新密碼。WITH關鍵字後面可以帶有多個參數with_option,這個參數有五個取值。
GRANT OPTION:將自己的權限授予其他用戶MAX_QUERIES_PER_HOUR count:設置每小時最多可以執行多少次(count)查詢。
MAX_UPDATES_PER_HOUR count:設置每小時最多可以執行多少次更新。
MAX_CONNECTIONS_PER_HOUR count:設置每小時最大的連接數量。
lMAX_USER_CONNECTIONS:設置每個用戶最多可以同時建立連接的數量。
查看權限
SHOW GRANTS FOR ‘username‘@‘hostname‘;
收回權限
為了保證數據庫的安全性,需要將用戶不必要的權限收回
1、收回用戶指定權限
REVOKE privileges [columns][,privileges[(columns)]] ON database.table
FROM ‘username‘@‘hostname‘[,‘username‘@‘hostname‘] …
2、收回用戶全部權限
REVOKE ALL PRIVILEGES,GRANT OPTION
FROM ‘username‘@‘hostname‘ [,‘username‘@‘hostname‘] …
MySQL<數據庫的高級操作>