我创建了数据库,例如'mydb' .
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;
现在我可以从任何地方登录数据库,但无法创建表 .
如何授予该数据库和(将来)表的所有权限 . 我无法在'mydb'数据库中创建表 . 我总是得到:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
10 回答
要授予数据库的所有权限:
mydb
给用户:myuser
,只需执行:要么:
PRIVILEGES
关键字不是必需的 .另外我不知道为什么其他答案表明
IDENTIFIED BY 'password'
被放在命令的末尾 . 我认为这不是必需的 .我只能通过添加
GRANT OPTION
才能使其工作,而不会总是收到权限被拒绝错误1.创建数据库
2.为数据库db_name创建用户名
3.使用数据库
4.最后,您在数据库db_name中,然后执行create,select和insert操作等命令 .
适用于架构的权限:)
可选:在
mypasswd
之后你可以添加WITH GRANT OPTION
这就是我创建“超级用户”权限的方式(虽然我通常会指定一个主机) .
重要说明
虽然这个答案可以解决访问问题,
WITH GRANT OPTION
创建了一个可以edit the permissions of other users的MySQL用户 .出于安全原因,您不应将此类型的用户帐户用于公众可以访问的任何进程(即网站) . 建议您create a user with only database privileges进行此类使用 .
这是一个老问题,但我不认为接受的答案是安全的 . 如果要在单个数据库上授予权限,那么创建超级用户会很好但不好 .
%
似乎没有涵盖套接字通信,localhost
用于 .WITH GRANT OPTION
仅对超级用户有利,否则通常存在安全风险 .希望这可以帮助 .
您好我使用此代码在mysql中拥有超级用户
然后
仅从远程服务器访问mydb数据库
从远程服务器访问所有数据库 .
这对某些人有用:
从MySQL命令行:
遗憾的是,此时newuser无权对数据库执行任何操作 . 事实上,如果newuser甚至尝试登录(使用密码,密码),他们将无法访问MySQL shell .
因此,首先要做的是为用户提供他们所需信息的访问权限 .
此命令中的星号指的是它们可以访问的数据库和表(分别) - 此特定命令允许用户读取,编辑,执行和执行所有数据库和表中的所有任务 .
完成要为新用户设置的权限后,请务必重新加载所有权限 .
您的更改现在将生效 .
有关更多信息:http://dev.mysql.com/doc/refman/5.6/en/grant.html
如果您对命令行不熟悉,那么您可以使用像MySQL workbench,Navicat或SQLyog这样的客户端
此SQL授予所有数据库,但只授予基本权限 . 它们足以用于Drupal或Wordpress,并且作为一个精确的,允许一个开发者帐户用于本地项目 .