我正在尝试在MariaDB上设置一个最初来自PostgreSQL的数据库模式。
MariaDB中的正确语法是什么:
ALTER DATABASE mydbname OWNER TO someuser
和授予权限类似:
GRANT ALL PRIVILEGES ON DATABASE mydbname TO someotheruser
两者都适用于PostgreSQL,并且是有效的SQL-99语法。 MariaDB(PHPMyAdmin前端)给了我:#1064 - 你的SQL语法有错误;
答案 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分配数据库权限,如上所示。