我已经创建了数据库,例如'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'
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;
这就是我创建"超级用户"权限的方式(尽管我通常会指定一个主机)。
虽然这个答案可以解决访问问题,但WITH GRANT OPTION
创建了一个可以[编辑其他用户的权限]的MySQL用户(https://dev.mysql.com/doc/refman/5.6/en/privileges-provided.html#priv_grant-option)。
GRANT OPTION权限使你能够把你自己拥有的那些权限给其他用户或从其他用户那里删除。
出于安全考虑,你不应该将这种类型的用户帐户用于公众可以访问的任何程序(即网站)。建议你为这种用途创建一个只有数据库权限的用户。
这是个老问题,但我认为公认的答案并不安全。这对创建一个超级用户很有好处,但如果你想在一个单一的数据库上授予权限,那就不好了。
grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';
%
似乎不包括套接字通信,即localhost
是为了。WITH GRANT OPTION
只适合超级用户,否则通常会有安全风险。
希望这有帮助。
这对一些人来说会有帮助。
从MySQL命令行。
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
可悲的是,在这一点上,newuser没有权限对数据库做任何事情。事实上,如果newuser甚至试图登录(用密码,password),他们将无法到达MySQL shell。
因此,要做的第一件事是为用户提供他们将需要的信息的权限。
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
该命令中的星号指的是他们可以访问的数据库和表(分别)--该特定命令允许用户读取、编辑、执行和执行所有数据库和表的任务。
一旦你确定了你要为新用户设置的权限,一定要确保重新加载所有的权限。
FLUSH PRIVILEGES;
您的更改现在将生效。
欲了解更多信息:http://dev.mysql.com/doc/refman/5.6/en/grant.html
如果你不习惯使用命令行,那么你可以使用一个客户端,如 MySQL workbench、Navicat 或 SQLyog 。
1. 创建数据库
CREATE DATABASE db_name;
2. 创建数据库的用户名db_name。
GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';
 3. 使用数据库
USE db_name;
4. 最后你在数据库db_name中再执行命令,如创建,选择和插入操作。
这个SQL授予所有数据库,但只是基本权限。 他们'对于Drupal或Wordpress来说已经足够了,而且作为一个很好的东西,允许一个开发者账户用于本地项目。
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP,
INDEX, ALTER, CREATE TEMPORARY TABLES
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY 'mypasswd';
适用于模式上的权限 :)
可选。 在 "mypasswd "后面可以加上 "WITH GRANT OPTION"。
我只能通过添加 "GRANT OPTION "来实现,如果没有这个功能,总是收到权限拒绝的错误信息。
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION;
你好,我用这段代码在mysql中拥有超级用户。
GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE,
CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP,
EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE,
LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN,
SUPER
ON *.* TO mysql@'%'
WITH GRANT OPTION;
然后
FLUSH PRIVILEGES;