向mariadb用户授予创建数据库特权

问题描述

我对数据库管理是相当陌生的(我仅通过代码与DB进行交互,并且已经设置了服务器:p)。像linux distro一样,使用root用户也是一种不良行为,我正在使用基本权限(创建数据库删除db,对所有新创建的dbs的所有访问权限)来设置自定义用户
我创建了一个用户antoine,该用户应该是用于登录mariadb server的基本用户

问题是,我不知道如何授予管理特权,例如create database xxxdrop database xxx等。文档说明,要授予特权,请运行以下命令: / p>

GRANT role ON database.table TO user@host

但是,当涉及服务器特权时,我该怎么办呢?我尝试使用*.*代替database.table,但是它不起作用。
有人可以帮我吗?

谢谢?!

解决方法

创建一个用户,然后授予该用户您想要他们拥有的特权。

CREATE USER 'antoine'@'localhost' IDENTIFIED VIA mysql_native_password USING 'a-password';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON *.* TO 'antoine'@'localhost'; 
,

演示:

我创建了一个有权连接的用户,但没有其他权限。

mysql> create user 'testy'@'%' identified by 'testy';
Query OK,0 rows affected (0.02 sec)

我以该用户身份登录,发现他们没有创建架构(数据库的同义词)的特权。

$ mysql -utesty -ptesty

mysql> create schema test2;
ERROR 1044 (42000): Access denied for user 'testy'@'%' to database 'test2'

以我的管理员用户身份登录并授予他们特权:

mysql> grant create on *.* to 'testy'@'%';
Query OK,0 rows affected (0.01 sec)

现在我的测试用户可以做到:

$ mysql -utesty -ptesty

mysql> create schema test2;
Query OK,1 row affected (0.01 sec)

我不知道您的意思是“它没有用”。这不是描述问题的好方法。您执行的命令是什么?当您执行该命令时发生了什么?它给出了错误吗?如果是这样,那是什么错误?