我正试图通过我的站点mySQL部分为一个phpMyAdmin数据库创建一个模式。但是,当我尝试运行以下脚本时:
CREATE SCHEMA `mydb`我知道这个错误,我不知道该怎么做!我对mySQL非常陌生,所以任何建议都将不胜感激。我知道这是某种许可问题?
错误1044:拒绝用户' user '@'%‘访问数据库'mydb’
发布于 2013-02-04 16:16:22
下次登录到MySQL时,运行以下查询:
SELECT USER(),CURRENT_USER();这能给你什么?
USER()报告您如何尝试在MySQL中进行身份验证。CURRENT_USER()报告如何允许您在MySQL中进行身份验证。CURRENT_USER()返回的内容包含了所有您所拥有的权限,而不是您登录的权限。很可能,你没有必要的特权。
请查看您所拥有的授权并加以更正,或与具有必要特权的用户进行连接。
若要查看分配的特权,请运行
SHOW GRANTS FOR CURRENT_USER();在您的评论中,您声明您在登录时(从CURRENT_USER()函数的输出)具有以下权限:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER,
CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW,
CREATE ROUTINE, ALTER ROUTINE ON waitronmain`.* TO ''waitronmain''@''%'';这些是你所有的权利。由于您处于托管DB设置中,因此不能授予创建数据库的权限。更重要的是,他们不会让你这么做很容易。尽管列表中有CREATE特权,但它不适用于数据库级别,只适用于表级别。
这里有证据:我有一个名为zipcodes的数据库。我将创建一个名为rolando的用户
mysql> grant all on zipcodes.* to rolando identified by 'blahblah';
Query OK, 0 rows affected (0.04 sec)
mysql> show grants for rolando;
+--------------------------------------------------------------------------------------------------------+
| Grants for rolando@% |
+--------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'rolando'@'%' IDENTIFIED BY PASSWORD '*446525BB82B5E22BD9E525261D37C494F623C52B' |
| GRANT ALL PRIVILEGES ON `zipcodes`.* TO 'rolando'@'%' |
+--------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)下面是mysql模式对CREATE特权的说明:
mysql> select user,host,create_priv from mysql.user where user='rolando';
+---------+------+-------------+
| user | host | create_priv |
+---------+------+-------------+
| rolando | % | N |
+---------+------+-------------+
1 row in set (0.00 sec)
mysql> select user,host,create_priv from mysql.db where user='rolando';
+---------+------+-------------+
| user | host | create_priv |
+---------+------+-------------+
| rolando | % | Y |
+---------+------+-------------+
1 row in set (0.00 sec)
mysql>因此,正如我所说的,用户没有全局CREATE特权。用户拥有表CREATE特权,因为mysql.db有代表create_priv的Y。
https://dba.stackexchange.com/questions/34072
复制相似问题