如何从CLI管理阿里巴巴MySQL数据库

阿里云提供高度可用的按需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(图形用户界面)也是如此。


猜你喜欢

转载自blog.51cto.com/14009535/2328882
今日推荐