找回密码
 立即注册
搜索
查看: 61|回复: 0

[linux系统] 如何从命令行管理MySQL数据库和用户

[复制链接]

64

主题

0

回帖

2万

积分

超级版主

积分
20208

突出贡献优秀版主论坛元老

发表于 2024-12-4 15:50:17 | 显示全部楼层 |阅读模式
MySQL是最流行的开源关系数据库之一。

MySQL服务器允许我们创建大量用户和数据库并授予适当的权限,以便用户可以访问和管理数据库。

本教程向我们展示如何通过命令行创建MySQL和MariaDB数据库和用户,通过该教程你将学会这些。

前提条件

在开始本教程之前,我们假设你在自己的系统上已经安装了MySQL或MariaDB服务软件。所有命令都将作为root用户在MySQL提示符内执行。

在命令行终端中键入如下命令进入root帐号的MySQL的命令行交互对话。

  1. mysql -u root -p
复制代码

创建一个MySQL数据库

要创建新的MySQL或MariaDB数据库,运行以下命令,只需将database_name替换为您要创建的数据库的名称:

  1. CREATE DATABASE database_name;
复制代码

输出:

Query OK, 1 row affected (0.00 sec)

如果你创建的数据库已经存在,你将会看到输出如下错误提示信息:

ERROR 1007 (HY000): Can't create database 'database_name'; database exists

为了避免创建一个已经存在的同名数据库时产生错误,我们可以通过以下命令来避免。

  1. CREATE DATABASE IF NOT EXISTS database_name;
复制代码

输出:

[quode]Query OK, 1 row affected, 1 warning (0.00 sec)[/quode]
在上面的输出中你将会看到 Query OK 这意味着SQL语句执行成功,而其中的1 warning告诉我们创建的数据库已经存在被创建过。

列出所有MySQL数据库

我们可以通过以下命令列出所有在我们MySQL或MariaDB中的数据库。

  1. 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,数据库运行以下命令:

  1. 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

我们可以使用如下命令避免这个错误:

  1. DROP DATABASE IF EXISTS database_name;
复制代码

输出:

Query OK, 0 rows affected, 1 warning (0.00 sec)

通过上面的输出,你可以看到 Query OK 这就意味着我们执行成功,而其中的1 warning则告诉我们数据库database_name已经存在。

创建MySQL用户

MySQL中的用户帐户由用户名和主机名部分组成。

要创建新的MySQL或MariaDB用户帐户,请运行以下命令,只需将“database_user”替换为您要创建的用户的名称:

  1. CREATE USER 'database_user'@'localhost' IDENTIFIED BY 'user_password';
复制代码

在上面的命令中,我们将主机名部分设置为localhost,这意味着该用户只能从localhost(即运行MySQL Server的系统)连接到MySQL服务器。 如果要授予其他主机的访问权限,只需使用远程计算机IP更改localhost,或使用'%'通配符作为主机部分,这意味着用户帐户将能够从任何主机进行连接。

与使用数据库时相同,以避免在尝试创建已存在的用户帐户时出错,您可以使用:

  1. 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用户帐户密码的语法取决于您在系统上运行的服务器版本。

您可以通过发出以下命令找到您的服务器版本:

  1. mysql --version
复制代码

如果你有MySQL 5.7.6及更新版或MariaDB 10.1.20及更新版,要更改密码,请使用以下命令:

  1. ALTER USER 'database_user'@'localhost' IDENTIFIED BY 'new_password';
复制代码

如果你有MySQL 5.7.5及更早版本或MariaDB 10.1.20及更早版本,那么使用:

  1. SET PASSWORD FOR 'database_user'@'localhost' = PASSWORD('new_password');
复制代码

在这两种情况下,输出应如下所示:

Query OK, 0 rows affected (0.00 sec)

列出所有MySQL帐号

我们可以通过查询mysql.users表列出所有MySQL或MariaDB用户帐户:

  1. 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帐号

要删除用户帐户,请使用以下命令:

  1. DROP USER 'database_user@'localhost';
复制代码

如果您尝试删除不存在的用户帐户,则会发生错误。

ERROR 1396 (HY000): Operation DROP USER failed for 'database_user'@'localhost'

与使用数据库时相同,以避免您可以使用的错误:

  1. DROP USER IF EXISTS 'database_user'@'localhost';
复制代码

输出:

Query OK, 0 rows affected, 1 warning (0.00 sec)

授予MySQL用户帐户权限

可以为用户帐户授予多种类型的权限。 您可以在此处找到MySQL支持的完整权限列表。 在本指南中,我们将通过几个例子:

要通过特定数据库授予用户帐户的所有权限,请使用以下命令:

  1. GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
复制代码

要为所有数据库上的用户帐户授予所有权限,请使用以下命令:

  1. GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
复制代码

要从数据库中对特定表上的用户帐户授予所有权限,请使用以下命令:

  1. GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
复制代码

如果您只想通过特定数据库类型为用户帐户授予特定权限:

  1. GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';
复制代码

撤消MySQL用户帐户的权限

如果您需要从用户帐户撤消一个或多个权限或所有权限,则语法几乎与授予权限相同。 例如,如果要通过特定数据库撤消用户帐户的所有权限,请使用以下命令:

  1. REVOKE ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
复制代码

显示MySQL用户帐户权限

要查找授予特定MySQL用户帐户类型的权限,请执行以下操作:

  1. 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数据库和用户的人来说,它应该是一个很好的开端。 您还可以查看有关如何重置MySQL root密码的教程,以防您忘记密码。


原文链接:https://linux265.com/news/3591.html

手机版|Discuz! X

GMT+8, 2024-12-22 09:41 , Processed in 0.099478 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表