如何從CLI管理阿里巴巴MySQL資料庫

Tybyq發表於2018-12-11

阿里雲提供高度可用的按需MySQL,SQL Server和PostgreSQL資料庫,作為其ApsaraDB for RDS  (關聯式資料庫服務)的一部分。

RDS易於設定和部署。該服務處理資料庫伺服器的所有管理任務,包括在發生災難時進行配置,修補和恢復。

除了這個即用型資料庫服務,您還可以選擇從彈性計算服務(ECS)例項設定自己的阿里雲MySQL資料庫。

無論您的選擇如何,您都可以透過命令列介面(CLI)管理您的阿里巴巴MySQL資料庫。本文將教您如何從命令列處理常見的MySQL資料庫管理任務。

先決條件

在開始之前,請確保您具有以下內容:

  1. 有效的阿里雲帳戶。

  2. 執行作業系統(例如Ubuntu或Centos)和MySQL資料庫伺服器或ApsaraDB for RDS例項的ECS例項。您可以選擇這兩種配置中的任何一種。

  3. 如果您使用的是ApsaraDB,則使用MySQL主帳戶使用者名稱和密碼

  4. 如果已在ECS例項上部署MySQL資料庫,則具有sudo許可權的非root使用者。

第1步:連線到您的MySQL例項

首先,如果要連線到ApsaraDB for RDS,請確保已為計算機的IP地址建立了白名單組。

如果您從阿里巴巴ECS例項執行MySQL,則需要使用伺服器的公共IP地址與其進行SSH連線。

無論您的連線方法和產品型別如何(ApsaraDB或帶有MySQL伺服器的ECS例項),連線到MySQL的基本語法如下所示:

連線到ECS例項時的MySQL連線語法:

$ mysql  -uroot  -p

連線到ApsaraDB for RDS時的MySQL連線語法:

$ mysql  -uroot  -h -p

$ mysql  -uroot  -hserver -name .mysql.rds.aliyuncs.com -p

出現提示時輸入密碼,然後按Enter繼續:

第2步:在命令列上管理MySQL資料庫

一旦連線到MySQL資料庫,就可以執行SQL(結構化查詢語言)命令來管理MySQL例項,包括建立; 使用者,資料庫,表,列/欄位。您還可以在任何資料庫表上執行CRUD(建立讀取更新和刪除)操作。

MySQL顯示資料庫命令

您可以執行以下命令檢視阿里巴巴MySQL伺服器上的可用資料庫;

mysql> show  databases ;
+ -------------------- +
| 資料庫            |
+ -------------------- +
| information_schema |
| mysql |
| performance_schema |
| sys |
+ -------------------- +
4行中 集合(0.01秒)

MySQL建立資料庫命令

要在您的阿里巴巴MySQL伺服器上建立資料庫,請使用以下命令:

mysql> create  database test1;

請記住將 “sample2” 替換為資料庫的首選名稱。

在MySQL中切換資料庫

您可以透過'use'命令在MySQL中從一個資料庫切換到另一個資料庫。例如,要切換到上面建立的資料庫,請使用以下命令:

mysql> 使用 test1

MySQL建立表命令

切換到資料庫後,可以使用以下語法建立表;

mysql> create  table   (field1資料型別,field2資料型別)

MySQL支援多種資料型別,您可以在此處參考完整列表

您應該根據應用程式的需要使用正確的資料型別。

例如,要建立一個名為students的表,其中包含兩個欄位(student_id和student_name),我們可以使用以下語法:

mysql> CREATE  TABLE學生(id INT  NOT  NULL,student_name VARCHAR(30)NOT  NULL);

MySQL Show Tables命令

要檢視所選資料庫中的所有表,請使用以下語法:

mysql> show  tables ;
+ ----------------- +
| Tables_in_test1 |
+ ----------------- +
| 學生|
+ ----------------- +
1  行 中 集合(0.01秒)

MySQL描述表命令

要獲取上面建立的表的結構,可以使用下面的SQL語句;

mysql> 描述學生;
+ -------------- + ------------- + ------ + ----- + ------- -  + ------- +
| 領域         | 輸入| 空 | 鑰匙 | 預設 | 額外的|
+ -------------- + ------------- + ------ + ----- + ------- -  + ------- +
| id | int(11)| 沒有    | | NULL     | |
| student_name | varchar(30)| 沒有    | | NULL     | |
+ -------------- + ------------- + ------ + ----- + ------- -  + ------- +
2排在 組(0.02秒)

第3步:MySQL CRUD操作

您可以透過命令列管理MySQL資料庫表上的記錄。CRUD是Create,Read,Update和Delete的首字母縮寫。

在MySQL表中建立記錄

要在資料庫表中插入記錄,請使用以下語法:

插入 到 < 表名稱>(列1,列2,欄3),值(column1value,column2value,column3value);

請注意列數和值應匹配。

例如,要在學生表中插入3個學生,我們可以使用以下SQL命令:

的MySQL> 插入 到學生(ID,student_name)值('1' ,'John Doe的');
查詢 OK,1  行受影響(0.02秒)
的MySQL> 插入 到學生(ID,student_name)值('2' ,'理查德羅伊');
查詢 OK,1  行受影響(0.01秒)
的MySQL> 插入 到學生(ID,student_name)值('3' ,'Jane Doe的');
查詢 OK,1  行受影響(0.01秒)

從MySQL表中檢索記錄

檢索記錄是MySQL CRUD操作的一部分。要讀取記錄,請使用select語句。

mysql> 從表中選擇 column1,column2,..。columnx  ;

例如,您可以使用以下命令從student表中檢索所有學生和所有列:

mysql> select * from students;
+ ---- + -------------- +
| id | student_name |
+ ---- + -------------- +
|  1 | John Doe
|  2 | 理查德羅|
|  3 | Jane Doe |
+ ---- + -------------- +
3排在 組(0.02秒)

有時,您可能只想從表中檢索某些列。例如,要檢索沒有名字的學生的ID,我們可以使用以下語法:

mysql> 從學生中選擇 id ;
+ ---- +
| id |
+ ---- +
|  1 |
|  2 |
|  3 |
+ ---- +
3排在 組(0.01秒)

過濾記錄

您可以使用 'where' 子句在檢索記錄時過濾記錄。例如,您可以使用以下語法僅檢索ID為“2”的學生:

的MySQL> 選擇 * 從學生其中 ID = '2' ;
+ ---- + -------------- +
| id | student_name |
+ ---- + -------------- +
|  2 | 理查德羅|
+ ---- + -------------- +
1  行 中 集合(0.01秒)

按升序或降序排序MySQL記錄

從阿里巴巴MySQL資料庫中檢索記錄時,您可能會覺得需要透過以下語法按升序或降序對它們進行排序:

mysql> SELECT表示式FROM  表 [ WHERE條件] ORDER  BY表示式[ ASC | DESC ];

使用上面的學生表,我們可以按字母順序排列學生的名字;

mysql> select * from students order  by student_name asc ;
+ ---- + -------------- +
| id | student_name |
+ ---- + -------------- +
|  3 | Jane Doe |
|  1 | John Doe
|  2 | 理查德羅|
+ ---- + -------------- +
3排在 組(0.01秒)

編輯和更新MySQL記錄

在生產環境中,編輯和更新MySQL記錄是不可避免的。為此,請使用以下命令:

mysql> 更新 table_name  SET column1 = value1,column2 = value2 ... WHERE  條件 ;

例如,您可以使用以下SQL命令更新學生ID“2”並將名稱更改為James Smith:

mysql> 更新學生設定 student_name = 'James Smith'  ,其中 id = '2' ;
查詢 OK,1  行受影響(0.02秒)
匹配的行數:1  已更改:1  警告:0

如果再次執行select語句,您將看到學生名稱已成功更新:

mysql> select * from students;
+ ---- + -------------- +
| id | student_name |
+ ---- + -------------- +
|  1 | John Doe
|  2 | 詹姆斯史密斯|
|  3 | Jane Doe |
+ ---- + -------------- +
3排在 組(0.02秒)

從MySQL刪除表記錄

如果要從表中完全刪除記錄,請使用以下SQL語法:

mysql> 從table_name中刪除 WHERE column = value

例如,您可以使用以下命令刪除ID為3的學生;

mysql> 從 id = '3'的學生中刪除  ;
查詢 OK,1  行受影響(0.02秒)

從MySQL表中刪除所有記錄

如果您有大量記錄並且想要在單個命令中擦除整個表,請使用truncate語句:

mysql> truncate [ 表名]

要刪除學生表中的所有記錄,請鍵入:

mysql> 截斷學生;
查詢正常,0行受影響(0.02秒)

如果您嘗試再次檢索記錄,MySQL將顯示一個空集:

mysql> select * from students;
空集(0.02秒)

修改MySQL表中的列

您可以使用以下語法將列新增到現有表:

mysql> Alter  table_name  add [ column name] [ data type]

例如,要使用Varchar作為資料型別新增名為“class”的列,並將長度值30新增到學生的表中,請使用以下命令:

mysql> Alter  表學生新增類Varchar(30);
查詢正常,0行受影響(0.02秒)
記錄:0重複:0  警告:0

將主鍵新增到MySQL表

要唯一標識表中的每條記錄,應新增主鍵(PK)。您應該將它新增到最獨特的列中,不可能有重複項。

mysql> Alter  表  新增 主 鍵(column_name);

例如,在我們的學生表中,id欄位是唯一的,因為沒有兩個學生可以共享相同的標識號。

mysql> Alter  表學生新增 主 鍵(id);
查詢正常,0行受影響(0.02秒)
記錄:0重複:0  警告:0

MySQL自動增量欄位

您可以指示MySQL使用“自動增量”功能自動為列分配序列號。例如,學生在入學時可以獲得身份證值。這將在資料庫表中新增後自動完成。

MySQL自動增量具有以下語法:

mysql> Alter  table [ table name]   修改 列 [ column name] auto_increment

要將其分配給學生表,請鍵入以下命令:

Mysql> Alter  表學生修改 列 id int  auto_increment ;
查詢正常,0行受影響(0.02秒)
記錄:0重複:0  警告:0

您可以使用describe語句檢查表的新結構以確認更改:

mysql> 描述學生;
+ -------------- + ------------- + ------ + ----- + ------- -  + ---------------- +
| 領域         | 輸入| 空 | 鑰匙 | 預設 | 額外的|
+ -------------- + ------------- + ------ + ----- + ------- -  + ---------------- +
| id | int(11)| 沒有    | PRI | NULL     | auto_increment |
| student_name | varchar(30)| 沒有    | | NULL     | |
| 班級| varchar(30)| 是的| | NULL     | |
+ -------------- + ------------- + ------ + ----- + ------- -  + ---------------- +
3排在 組(0.01秒)

刪除MySQL資料庫表

如果您不再需要資料庫中的表,請使用以下命令

mysql> Drop  table  table_name ;

刪除資料庫

要從MySQL伺服器中完全刪除資料庫,請使用以下命令

mysql> drop  database [database_name];

例:

mysql> drop  database test1;

請注意 :刪除表或資料庫是不可逆轉的; 您應首先備份資料庫以避免刪除錯誤的屬性,尤其是在生產環境中

第4步:管理MySQL資料庫使用者

您可以管理多個使用者並根據您希望他們在資料庫上執行的角色為其分配不同的許可權。

列出MySQL資料庫使用者

您可以透過鍵入以下命令檢視阿里巴巴MySQL資料庫中的可用使用者

mysql> 從 mysql .user中選擇 使用者,主機;
+ ----------------- + -------------- +
| 使用者             | 主持人|
+ ----------------- + -------------- +
| 極光| %|
| aurora_proxy | %|
| 根| %|
| _rds_outer_user | 127.0。0.1     |
| aliyun_root | 127.0。0.1     |
| mysql .session    | localhost |
+ ----------------- + -------------- +
6行中 集合(0.01秒)

建立MySQL資料庫使用者

要建立MySQL資料庫使用者,請使用以下語法:

mysql> 建立 使用者 '[使用者名稱]'' '[主機名]'由'PASSWORD'標識 ;

請記住將“示例”替換為您的使用者名稱,並使用強大的密碼值。

mysql> 建立 'PASSWORD'標識的使用者 'example_user' @'localhost' ;

如果您希望使用者從任何主機進行連線,請使用'%'代替localhost。例如;

mysql> 建立 'PASSWORD'標識的使用者 'example_user' @'%' ;

為MySQL使用者分配許可權

許可權是允許使用者在資料庫表中執行某些任務的許可權。要為使用者分配許可權,請使用以下語法:

mysql> GRANT < privileges > ON <property> TO user_name @'<hostname>' ;
mysql> FLUSH  PRIVILEGES ;

您可以使用逗號組合多個許可權,例如

mysql> GRANT  選擇,插入,刪除 ON   TO user_name @'' ;

要為使用者分配所有許可權,請使用以下語法:

mysql> GRANT  ALL  ON *。* TO  '[username]' @'[hostname]' ;
mysql> FLUSH  PRIVILEGES ;

要將MySQL使用者的許可權分配給特定資料庫,請使用以下語法:

mysql> GRANT  ALL  ON <database_name>。* TO  '[username]' @'[hostname]' ;
mysql> FLUSH  PRIVILEGES ;

在MySQL上檢視使用者授予的許可權

要檢視分配給使用者的授予許可權,請使用以下語法:

的MySQL> 顯示 補助 為 [使用者名稱]

例:

mysql> show  grants  for root;

| 資助 的根@%
| GRANT  SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,RELOAD,PROCESS,REFERENCES,INDEX,ALTER,CREATE  TEMATEARY  TABLES,LOCK  TABLES,EXECUTE,REPLICATION SLAVE,REPLICATION CLIENT,CREATE  VIEW,SHOW  VIEW,CREATE ROUTINE,ALTER ROUTINE,建立 使用者,事件,TRIGGER  ON *。* TO  '根' @ '%'  WITH  GRANT  OPTION |
+ - 1  行 中 集合(0.01秒)

撤銷MySQL使用者的許可權

如果您錯誤地分配了許可權,或者您不再希望使用者在MySQL伺服器上執行某些任務,則可以隨時撤銷MySQL使用者的許可權。為此,請使用以下命令:

mysql> 從'[username]' ''[hostname]' 撤銷 *。* 上的 [許可權] ;

您可以透過用逗號分隔多個許可權來撤消它們:

的MySQL> 撤銷 選擇,插入,刪除 上  從 '[使用者名稱]' @ '[主機名]' ;

要撤消所有許可權,請使用以下語法:

MySQL的> 撤消 所有 許可權 上 *。* 從 '[使用者名稱]' @ '[主機名]' ;

mysql> 從'example_user' @'%' 撤消 對 sample2。*的所有 許可權 。

刪除MySQL使用者

mysql> drop  user  '[username]' @'[hostname]' ;

例:

mysql> 刪除 使用者 'example_user' @'%' ;

結論

在本指南中,我們將指導您完成管理MySQL資料庫和託管在阿里雲上的使用者的步驟。如果您瞭解結構化查詢語言的正確語法,則MySQL命令列介面非常易於使用。本指南適用於ApsaraDB和ECS部署的資料庫。

此外,熟悉MySQL CLI命令可以解決與網站或應用程式相關的MySQL資料庫相關問題,即使您的計算機上沒有安裝GUI(圖形使用者介面)也是如此。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557424/viewspace-2284835/,如需轉載,請註明出處,否則將追究法律責任。

相關文章