我对数据库管理是相当陌生的(我仅通过代码与DB进行交互,并且已经设置了服务器:p)。像linux distro一样,使用root用户也是一种不良行为,我正在使用基本权限(创建数据库,删除db,对所有新创建的dbs的所有访问权限)来设置自定义用户。
我创建了一个用户antoine
,该用户应该是用于登录mariadb server
的基本用户。
问题是,我不知道如何授予管理特权,例如create database xxx
,drop database xxx
等。文档说明,要授予特权,请运行以下命令: / p>
GRANT role ON database.table TO user@host
但是,当涉及服务器特权时,我该怎么办呢?我尝试使用*.*
代替database.table
,但是它不起作用。
有人可以帮我吗?
谢谢?!
答案 0 :(得分:1)
创建一个用户,然后授予该用户您想要他们拥有的特权。
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';
答案 1 :(得分:1)
演示:
我创建了一个有权连接的用户,但没有其他权限。
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)
我不知道您的意思是“它没有用”。这不是描述问题的好方法。您执行的命令是什么?当您执行该命令时发生了什么?它给出了错误吗?如果是这样,那是什么错误?