1. 程式人生 > >MySQL<數據庫的高級操作>

MySQL<數據庫的高級操作>

4類 不必要 stop mysql啟動 rom 重要 cast roc mil

數據庫的高級操作

  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<數據庫的高級操作>