如何在MariaDB(MySQL)中正确设置所有权和权限?

时间:2014-10-25 09:59:15

标签: mysql privileges mariadb grant

我正在尝试在MariaDB上设置一个最初来自PostgreSQL的数据库模式。

MariaDB中的正确语法是什么:

ALTER DATABASE mydbname OWNER TO someuser

和授予权限类似:

GRANT ALL PRIVILEGES ON DATABASE mydbname TO someotheruser

两者都适用于PostgreSQL,并且是有效的SQL-99语法。 MariaDB(PHPMyAdmin前端)给了我:#1064 - 你的SQL语法有错误;

2 个答案:

答案 0 :(得分:8)

特权通常不是SQL标准的一部分,因为每个数据库都以自己的方式执行此操作。 MySQL和MariaDB没有像postgres这样的数据库所有者。他们确实拥有允许或拒绝帐户某些权利的特权系统。第二个看起来像:

GRANT ALL PRIVILEGES ON database.table TO 'user'@'host' [IDENTIFIED BY 'password']

IDENTIFIED是可选的。如果要像大多数人那样授予对所有表的访问权限,则可以使用星号。在特定数据库上设置GRANT ALL可以有效地防止“用户”访问其他模式对象。同样可以通过创建GRANT USAGE ON来实现。

答案 1 :(得分:1)

您可以在MariaDB中使用此授权声明:

GRANT ALL PRIVILEGES ON mydbname.* TO someotheruser

请查阅MariaDB关于授权声明的手册:https://mariadb.com/kb/en/mariadb/documentation/sql-commands/account-management-sql-commands/grant/

请查找SQL-99的授权语句语法:https://mariadb.com/kb/en/sql-99/15-authorizationids/grant-statement/ https://mariadb.com/kb/en/sql-99/15-authorizationids/privilege/

MariaDB和MySQL没有数据库所有者,而是使用grant分配数据库权限,如上所示。