我想在MySQL中创建一个新用户,并只赋予它对一个数据库的完全访问权,比如dbTest,我使用create database dbTest;这样的命令创建这个数据库。MySQL的命令是什么呢?
当前回答
创建一个用户并授予数据库上的所有权限。
登录MySQL:
mysql -u root
现在创建并授予
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
匿名用户(仅用于本地测试)
或者,如果你只是想授予对数据库的完全不受限制的访问权限(例如,在你的本地机器上的测试实例,你可以授予匿名用户访问权限,如下所示:
GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'
请注意
这对于开发中的垃圾数据来说很好。别对你在乎的人这么做。
其他回答
您可以使用create USER语句创建新用户,并使用GRANT授予他们权限。
$ mysql -u root -p -e "grant all privileges on dbTest.* to
`{user}`@`{host}` identified by '{long-password}'; flush privileges;"
忽略-p选项,如果mysql用户没有密码或只是按“[Enter]”键旁路。需要用实际值替换花括号括起来的字符串。
创建一个用户并授予数据库上的所有权限。
登录MySQL:
mysql -u root
现在创建并授予
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
匿名用户(仅用于本地测试)
或者,如果你只是想授予对数据库的完全不受限制的访问权限(例如,在你的本地机器上的测试实例,你可以授予匿名用户访问权限,如下所示:
GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'
请注意
这对于开发中的垃圾数据来说很好。别对你在乎的人这么做。
尝试使用运行在Windows机器上的MySQL Workbench在MySQL上创建数据库时遇到此问题。
下面的命令适用于Linux机器MySQL CLI:
CREATE DATABASE my-database ;
USE my-database ;
GRANT ALL PRIVILEGES ON 'my-database'.* TO 'my_user'@'%' IDENTIFIED BY 'my-password' ;
但是不能在运行在Windows机器上的MySQL Workbench上工作。我不得不使用下面的命令。注意如何
`
符号和
'
用于以下命令:
CREATE DATABASE `my-database` ;
USE `my-database` ;
GRANT ALL PRIVILEGES ON `my-database`.`*` TO `my_user`@`%` IDENTIFIED BY 'my-password' ;
OR
CREATE SCHEMA `my-database` ;
USE `my-database` ;
GRANT ALL PRIVILEGES ON `my-database`.`*` TO `my_user`@`%` IDENTIFIED BY 'my-password' ;
下面的命令可以工作,如果你想创建一个新用户,让他访问本地主机上的特定数据库(不是Mysql中的所有数据库)。
GRANT ALL PRIVILEGES ON test_database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
这将把一个数据库test_database(在本例中为dbTest)的所有特权授予本地主机上的该用户。
通过运行下面的命令,检查上面的命令授予该用户的权限。
SHOW GRANTS FOR 'user'@'localhost'
以防万一,如果您希望将用户访问限制为仅一个表
GRANT ALL ON mydb.table_name TO 'someuser'@'host';