我想在MySQL中创建一个新用户,并只赋予它对一个数据库的完全访问权,比如dbTest,我使用create database dbTest;这样的命令创建这个数据库。MySQL的命令是什么呢?


当前回答

对我来说,这很有效。

CREATE USER 'spowner'@'localhost' IDENTIFIED BY '1234'; 
GRANT ALL PRIVILEGES ON test.* To 'spowner'@'localhost'; 
FLUSH PRIVILEGES;

在哪里

Spowner:用户名 1234: spowner的密码 测试:数据库“spowner”具有访问权限

其他回答

您可以使用create USER语句创建新用户,并使用GRANT授予他们权限。

尝试这样创建用户:

CREATE USER 'user'@'hostname';

尝试让它访问数据库dbTest:

GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';

如果你在同一台机器上运行代码/站点访问MySQL,主机名应该是localhost。

现在我们来分析一下。

GRANT -该命令用于创建用户并授予数据库、表等权限。

ALL PRIVILEGES——这告诉它用户将拥有所有标准权限。但是,这并不包括使用GRANT命令的特权。

印度生物技术部。* -指示MySQL在整个dbtest数据库中应用这些权限。如果愿意,可以用特定的表名或存储例程替换*。

TO 'user'@'hostname' - 'user'是您创建的用户帐户的用户名。注意:这里必须有单引号。“hostname”告诉MySQL用户可以从哪个主机连接。如果您只想从同一台机器上获取,请使用localhost

IDENTIFIED BY 'password' -正如你已经猜到的那样,这设置了该用户的密码。

尝试使用运行在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' ;

如果主机部分被省略,它默认为通配符%,允许所有主机。

创建用户service-api

授予数据库上的所有权限。*访问'service-api'

SELECT * FROM mysql.user;
SHOW GRANTS FOR 'service-api'

创建一个用户并授予数据库上的所有权限。

登录MySQL:

mysql -u root

现在创建并授予

GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';

匿名用户(仅用于本地测试)

或者,如果你只是想授予对数据库的完全不受限制的访问权限(例如,在你的本地机器上的测试实例,你可以授予匿名用户访问权限,如下所示:

GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'

请注意

这对于开发中的垃圾数据来说很好。别对你在乎的人这么做。