|
MySQL是最流行的开源关系数据库之一。
MySQL服务器允许我们创建大量用户和数据库并授予适当的权限,以便用户可以访问和管理数据库。
本教程向我们展示如何通过命令行创建MySQL和MariaDB数据库和用户,通过该教程你将学会这些。
前提条件
在开始本教程之前,我们假设你在自己的系统上已经安装了MySQL或MariaDB服务软件。所有命令都将作为root用户在MySQL提示符内执行。
在命令行终端中键入如下命令进入root帐号的MySQL的命令行交互对话。
创建一个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;
复制代码
输出:
[quode]Query OK, 1 row affected, 1 warning (0.00 sec)[/quode]
在上面的输出中你将会看到 Query OK 这意味着SQL语句执行成功,而其中的1 warning告诉我们创建的数据库已经存在被创建过。
列出所有MySQL数据库
我们可以通过以下命令列出所有在我们MySQL或MariaDB中的数据库。
输出:
+--------------------+
| 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 warning则告诉我们数据库database_name已经存在。
创建MySQL用户
MySQL中的用户帐户由用户名和主机名部分组成。
要创建新的MySQL或MariaDB用户帐户,请运行以下命令,只需将“database_user”替换为您要创建的用户的名称:
- CREATE USER 'database_user'@'localhost' IDENTIFIED BY 'user_password';
复制代码
在上面的命令中,我们将主机名部分设置为localhost,这意味着该用户只能从localhost(即运行MySQL Server的系统)连接到MySQL服务器。 如果要授予其他主机的访问权限,只需使用远程计算机IP更改localhost,或使用'%'通配符作为主机部分,这意味着用户帐户将能够从任何主机进行连接。
与使用数据库时相同,以避免在尝试创建已存在的用户帐户时出错,您可以使用:
- 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 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';
复制代码
如果您尝试删除不存在的用户帐户,则会发生错误。
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数据库和用户的人来说,它应该是一个很好的开端。 您还可以查看有关如何重置MySQL root密码的教程,以防您忘记密码。
原文链接:https://linux265.com/news/3591.html
|
|