阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何从命令行管理MySQL数据库和用户

198次阅读
没有评论

共计 4310 个字符,预计需要花费 11 分钟才能阅读完成。

本教程介绍了如何使用命令行来创建和管理 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 数据库和用户

如果你有 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,就这样!如果您有任何问题或反馈,请随时发表评论。

在 CentOS Linux 7.5 上安装 MySQL  https://www.linuxidc.com/Linux/2018-05/152574.htm

Ubuntu 16.04 上安装 MySQL 5.7 教程 https://www.linuxidc.com/Linux/2017-05/143864.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计4310字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中