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