如何從命令行管理MySQL數據庫和用戶
本教程介紹了如何使用命令行來創建和管理MySQL或MariaDB數據庫和用戶。 MySQL是***的開源關系數據庫管理系統。 MySQL服務器允許我們創建大量用戶和數據庫并授予適當的權限,以便用戶可以訪問和管理數據庫。
在你開始之前
在開始本教程之前,我們假設您已經在系統上安裝了MySQL或MariaDB服務器。 所有命令將作為root用戶在MySQL提示符內執行。
要打開MySQL提示符,輸入以下命令并在提示時輸入MySQL root用戶密碼:
- mysql -u root -p
創建一個新的MySQL數據庫
要創建新的MySQL或MariaDB數據庫,請運行以下命令,只需將database_name替換為要創建的數據庫的名稱即可:
- CREATE DATABASE database_name;
輸出:
- Query OK, 1 row affected (0.00 sec)
如果您嘗試創建一個已經存在的數據庫,您將看到以下錯誤消息:
- ERROR 1007 (HY000): Can't create database 'database_name'; database exists
為避免出現錯誤,如果您嘗試創建的名稱相同的數據庫存在,則可以使用以下命令:
- CREATE DATABASE IF NOT EXISTS database_name;
輸出:
- Query OK, 1 row affected, 1 warning (0.00 sec)
在上面的輸出中,您可以看到查詢OK,這意味著查詢成功,并且有1個警告告訴我們數據庫已經存在,并且沒有創建新的數據庫。
列出所有MySQL數據庫
我們可以使用以下命令列出MySQL或MariaDB服務器上存在的所有數據庫:
- SHOW DATABASES;
輸出:
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | database_name |
- | mysql |
- | performance_schema |
- | sys |
- +--------------------+
- 5 rows in set (0.00 sec)
information_schema,mysql,performance_schema和sys數據庫是在安裝時創建的,它們存儲有關所有其他數據庫,系統配置,用戶,權限和其他重要數據的信息。 這些數據庫對于MySQL安裝的正確功能是必需的。
刪除一個MySQL數據庫
要刪除MySQL或MariaDB,請運行以下命令:
- DROP DATABASE database_name;
輸出:
- Query OK, 0 rows affected (0.00 sec)
如果您嘗試刪除不存在的數據庫,您將看到以下錯誤消息:
- ERROR 1008 (HY000): Can't drop database 'database_name'; database doesn't exist
為了避免這個錯誤,你可以使用下面的命令:
- DROP DATABASE IF EXISTS database_name;
輸出:
- Query OK, 0 rows affected, 1 warning (0.00 sec)
在上面的輸出中,您可以看到Query OK,這意味著查詢成功,并且有1個警告告訴我們數據庫不存在。
創建一個新的MySQL用戶帳戶
MySQL中的用戶帳戶由用戶名和主機名部分組成。
要創建一個新的MySQL或MariaDB用戶帳戶,請運行以下命令,只需將'database_user'替換為您要創建的用戶的名稱即可:
- CREATE USER 'database_user'@'localhost' IDENTIFIED BY 'user_password';
在上面的命令中,我們將主機名部分設置為localhost,這意味著該用戶將只能從本地主機(即從運行MySQL服務器的系統)連接到MySQL服務器。 如果您想授予來自其他主機的訪問權限,只需使用遠程計算機IP更改本地主機,或者為主機部分使用'%'通配符,這意味著用戶帳戶將能夠從任何主機連接。
與使用數據庫時一樣,在嘗試創建已存在的用戶帳戶時可避免出現錯誤,您可以使用:
- CREATE USER IF NOT EXISTS 'database_user'@'localhost' IDENTIFIED BY 'user_password';
輸出:
- Query OK, 0 rows affected, 1 warning (0.00 sec)
更改MySQL用戶帳戶密碼
更改MySQL或MariaDB用戶帳戶密碼的語法取決于您在系統上運行的服務器版本。
您可以通過發出以下命令找到您的服務器版本:
- mysql --version
如果你有MySQL 5.7.6或更高版本或MariaDB 10.1.20及更新版本,要更改密碼,請使用以下命令:
- ALTER USER 'database_user'@'localhost' IDENTIFIED BY 'new_password';
如果您有MySQL 5.7.5及更高版本或MariaDB 10.1.20及更高版本,請使用:
SET PASSWORD FOR 'database_user'@'localhost' = PASSWORD('new_password');
在這兩種情況下,輸出應如下所示:
- Query OK, 0 rows affected (0.00 sec)
列出所有MySQL用戶帳戶
我們可以通過查詢mysql.users表來列出所有MySQL或MariaDB用戶帳戶:
- SELECT user, host FROM mysql.user;
輸出應該如下所示。 此輸出列出了在Ubuntu機器上運行的MySQL 5.7服務器的默認用戶以及我們之前添加的兩個額外用戶帳戶'database_user'@'%'和'database_user'@'localhost'。
輸出:
- +------------------+-----------+
- | user | host |
- +------------------+-----------+
- | database_user | % |
- | database_user | localhost |
- | debian-sys-maint | localhost |
- | mysql.session | localhost |
- | mysql.sys | localhost |
- | root | localhost |
- +------------------+-----------+
- 6 rows in set (0.00 sec)
刪除MySQL用戶帳戶
要刪除用戶帳戶,請使用以下命令:
- DROP USER 'database_user@'localhost';
輸出:
- DROP USER 'database_user@'localhost';
如果您嘗試刪除不存在的用戶帳戶,則會發生錯誤。
- ERROR 1396 (HY000): Operation DROP USER failed for 'database_user'@'localhost'
與處理數據庫時一樣,以避免錯誤可以使用:
- DROP USER IF EXISTS 'database_user'@'localhost';
輸出:
- Query OK, 0 rows affected, 1 warning (0.00 sec)
授予MySQL用戶帳戶的權限
有多種類型的權限可以授予用戶帳戶。 您可以在這里找到MySQL支持的完整權限列表。 在本指南中,我們將通過幾個例子:
要通過特定數據庫將用戶帳戶的所有權限擴大,請使用以下命令:
- GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
要將所有權限擴展到所有數據庫上的用戶帳戶,請使用以下命令:
- GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
要通過數據庫中特定的表格將所有權限提供給用戶帳戶,請使用以下命令:
- GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
如果您只想授予特定數據庫類型的用戶帳戶的特定權限,請執行以下操作:
- GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';
撤銷MySQL用戶帳戶的權限
如果您需要從用戶帳戶中撤銷一個或多個權限或所有權限,則語法與授予它的幾乎相同。 例如,如果要通過特定數據庫撤消用戶帳戶的所有特權,請使用以下命令:
- REVOKE ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
顯示MySQL用戶帳戶權限
要查找授予特定MySQL用戶帳戶類型的權限:
- SHOW GRANTS FOR 'database_user'@'localhost';
顯示:
- +---------------------------------------------------------------------------+
- | Grants for database_user@localhost |
- +---------------------------------------------------------------------------+
- | GRANT USAGE ON *.* TO 'database_user'@'localhost' |
- | GRANT ALL PRIVILEGES ON `database_name`.* TO 'database_user'@'localhost' |
- +---------------------------------------------------------------------------+
- 2 rows in set (0.00 sec)
結論
本教程只介紹基礎知識,但對于任何想要了解如何從命令行管理MySQL數據庫和用戶的人來說,這應該是一個很好的開始。
OK,就這樣! 如果您有任何問題或反饋,請隨時發表評論。
Ubuntu 16.04 上安裝 MySQL 5.7 教程 https://www.linuxidc.com/Linux/2017-05/143864.htm