【Mysql】如何轻松管理用户和数据库

MySQL 是最流行的开源关系型数据库管理系统。MySQL 服务器允许我们创建多个用户和数据库,并授予适当的权限,以便用户可以访问和管理数据库。

这篇教程将解释如何使用命令行来创建和管理 MySQL 或 MariaDB 数据库及用户。

准备工作

在开始这篇教程之前,我们假设你已经在系统上安装了 MySQL 或 MariaDB 服务器。所有命令都将以 root 用户身份执行。

要打开 MySQL 提示符,输入以下命令,并在提示时输入 MySQL root 用户的密码:

复制代码
mysql -u root -p

创建一个新的 MySQL 数据库

要创建一个新的 MySQL 数据库,运行以下命令,只需将 database_name 替换为你想要创建的数据库名称:

复制代码
CREATE DATABASE database_name;
output 复制代码
Query OK, 1 row affected (0.00 sec)

如果你尝试创建一个已经存在的数据库,你会看到以下错误信息:

output 复制代码
ERROR 1007 (HY000): Can't create database 'database_name'; database exists

为了避免在尝试创建同名数据库时出现错误,你可以使用以下命令:

复制代码
CREATE DATABASE IF NOT EXISTS database_name;
output 复制代码
Query OK, 1 row affected, 1 warning (0.00 sec)

在上面的输出中,Query OK 表示查询成功,而 1 warning 告诉我们数据库已经存在,没有创建新的数据库。

列出所有 MySQL 数据库

你可以使用以下命令列出 MySQL 或 MariaDB 服务器上存在的所有数据库:

复制代码
SHOW DATABASES;

输出将类似于以下内容:

output 复制代码
+--------------------+
| Database           |
+--------------------+
| information_schema |
| database_name      |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

information_schemamysqlperformance_schemasys 数据库是在安装时创建的,它们存储了有关所有其他数据库、系统配置、用户、权限等重要信息。这些数据库对于 MySQL 安装的正常运行是必要的。

删除一个 MySQL 数据库

删除一个 MySQL 数据库就像运行一个简单的命令一样。这是一个不可逆的操作,应该谨慎执行。确保你没有删除错误的数据库,因为一旦删除数据库,就无法恢复。

要删除一个 MySQL 或 MariaDB 数据库,运行以下命令:

复制代码
DROP DATABASE database_name;
output 复制代码
Query OK, 0 rows affected (0.00 sec)

如果你尝试删除一个不存在的数据库,你会看到以下错误信息:

output 复制代码
ERROR 1008 (HY000): Can't drop database 'database_name'; database doesn't exist

为了避免这个错误,你可以使用以下命令:

复制代码
DROP DATABASE IF EXISTS database_name;

创建一个新的 MySQL 用户账户

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

要创建一个新的 MySQL 用户账户,运行以下命令,只需将 database_user 替换为你想要创建的用户名:

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

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

与处理数据库时一样,为了避免在尝试创建已存在的用户账户时出现错误,你可以使用:

复制代码
CREATE USER IF NOT EXISTS 'database_user'@'localhost' IDENTIFIED BY 'user_password';
output 复制代码
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');

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

output 复制代码
Query OK, 0 rows affected (0.00 sec)

列出所有 MySQL 用户账户

你可以通过查询 mysql.users 表来列出所有 MySQL 或 MariaDB 用户账户:

复制代码
SELECT user, host FROM mysql.user;

输出应类似于以下内容:

output 复制代码
+------------------+-----------+
| 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';

如果你尝试删除一个不存在的用户账户,将会出现错误。

output 复制代码
ERROR 1396 (HY000): Operation DROP USER failed for 'database_user'@'localhost'

与处理数据库时一样,为了避免错误,你可以使用:

复制代码
DROP USER IF EXISTS 'database_user'@'localhost';
output 复制代码
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';
output 复制代码
+---------------------------------------------------------------------------+
| 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 密码,也可以查看关于如何重置 MySQL root 密码的教程。

相关推荐
聪聪那年227 分钟前
Oracle 11g windows 10安装与卸载
数据库·oracle
故渊ZY9 分钟前
从入门到精通:MySQL 核心技术与业务落地实践
mysql
计算机毕设匠心工作室17 分钟前
【python大数据毕设实战】全面皮肤病症状数据可视化分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学
后端·python·mysql
前端之虎陈随易22 分钟前
MoonBit内置数据结构详解
数据结构·数据库·redis
qq_12498707531 小时前
基于SpringBoot+vue的小黄蜂外卖平台(源码+论文+部署+安装)
java·开发语言·vue.js·spring boot·后端·mysql·毕业设计
小二·1 小时前
Spring框架入门:TX 声明式事务详解
java·数据库·spring
万邦科技Lafite1 小时前
一键获取淘宝店铺所有商品信息,实时监控商品数据
开发语言·数据库·python·api·开放api·电商开放平台·淘宝开放平台
SUPER52661 小时前
运维hbase服务重启,导致应用查询异常 hbase:meta
运维·数据库·hbase
烤麻辣烫1 小时前
黑马程序员苍穹外卖后端概览
xml·java·数据库·spring·intellij-idea
点灯小铭1 小时前
基于单片机的智能药物盒设计与实现
数据库·单片机·嵌入式硬件·毕业设计·课程设计·期末大作业