首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法为mysql数据库创建模式

问无法为mysql数据库创建模式
EN

Database Administration用户
提问于 2013-02-04 15:55:54
回答 1查看 21.1K关注 0票数 2

我正试图通过我的站点mySQL部分为一个phpMyAdmin数据库创建一个模式。但是,当我尝试运行以下脚本时:

代码语言:javascript
复制
CREATE SCHEMA `mydb`

我知道这个错误,我不知道该怎么做!我对mySQL非常陌生,所以任何建议都将不胜感激。我知道这是某种许可问题?

错误1044:拒绝用户' user '@'%‘访问数据库'mydb’

EN

回答 1

Database Administration用户

回答已采纳

发布于 2013-02-04 16:16:22

下次登录到MySQL时,运行以下查询:

代码语言:javascript
复制
SELECT USER(),CURRENT_USER();

这能给你什么?

  • USER()报告您如何尝试在MySQL中进行身份验证。
  • CURRENT_USER()报告如何允许您在MySQL中进行身份验证。

CURRENT_USER()返回的内容包含了所有您所拥有的权限,而不是您登录的权限。很可能,你没有必要的特权。

请查看您所拥有的授权并加以更正,或与具有必要特权的用户进行连接。

若要查看分配的特权,请运行

代码语言:javascript
复制
SHOW GRANTS FOR CURRENT_USER();

在您的评论中,您声明您在登录时(从CURRENT_USER()函数的输出)具有以下权限:

代码语言:javascript
复制
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的用户

代码语言:javascript
复制
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特权的说明:

代码语言:javascript
复制
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。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/34072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档