mysql把用户权限授予新用户_在MySQL中创建新用户并授予其对一个数据库的完全访问权限...

我想在MySQL中创建一个新用户,并且只对一个数据库(比如dbTest提供完全访问权限,我使用create database dbTest;这样的命令create database dbTest; 。 那些MySQL命令会做什么?

#1楼

试试这个来创建用户:

CREATE USER 'user'@'hostname';

试试这个让它访问数据库dbTest :

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

如果您在同一台计算机上运行访问MySQL的代码/站点,则hostname将是localhost。

现在,分解了。

GRANT - 这是用于创建用户和授予数据库,表等权限的命令。

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

dbtest.* - 这指示MySQL应用这些权限以在整个dbtest数据库中使用。 如果您愿意,可以用特定的表名或存储例程替换*。

TO 'user'@'hostname' - 'user'是您正在创建的用户帐户的用户名。 注意:您必须在那里有单引号。 'hostname'告诉MySQL用户可以连接的主机。 如果您只想从同一台计算机上使用它,请使用localhost

IDENTIFIED BY 'password' - 正如您所猜测的那样,这会为该用户设置密码。

#2楼

您可以使用CREATE USER语句创建新用户,并使用GRANT为其授予权限。

#3楼

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

登录MySQL:

mysql -u root

现在创建并授予

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

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

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

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

意识到

这适用于开发中的垃圾数据。 不要对你关心的任何事情这样做。

#4楼

如果您想要创建新用户,则可以使用以下命令为他提供对localhost上特定数据库(不是Mysql中的所有数据库)的所有访问权限。

GRANT ALL PRIVILEGES ON test_database.* TO 'user'@'localhost' IDENTIFIED BY 'password';

这将向localhost上的该用户授予一个数据库test_database (在您的情况下为dbTest )的所有权限。

通过运行以下命令,检查上述命令向该用户发出的权限。

SHOW GRANTS FOR 'user'@'localhost'

以防万一,如果要限制用户只能访问一个表

GRANT ALL ON mydb.table_name TO 'someuser'@'host';

#5楼

句法

要在MySQL / MariaDB 5.7.6及更高版本中CREATE USER ,请使用CREATE USER语法 :

CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'new_password';

然后授予对数据库的所有访问权限(例如my_db ),使用GRANT语法 ,例如

GRANT ALL ON my_db.* TO 'new_user'@'localhost';

其中ALL ( priv_type )可以替换为SELECT , INSERT , UPDATE , ALTER等特定权限。

然后重新加载新分配的权限运行:

FLUSH PRIVILEGES;

执行

要运行上面的命令,您需要运行mysql命令并将其键入提示符,然后通过quit命令或Ctrl - D注销。

要从shell运行,请使用-e参数(将SELECT 1替换为上述命令之一):

$ mysql -e "SELECT 1"

或从标准输入打印声明:

$ echo "FOO STATEMENT" | mysql

如果您已通过上述访问被拒绝 ,请指定-u (对于用户)和-p (对于密码)参数,或者对于长期访问,请在~/.my.cnf设置您的凭据,例如

[client]

user=root

password=root

壳牌整合

对于不熟悉MySQL语法的人来说,这里有方便的shell函数,易于记忆和使用(要使用它们,你需要加载包含在下面的shell函数)。

这是一个例子:

$ mysql-create-user admin mypass

| CREATE USER 'admin'@'localhost' IDENTIFIED BY 'mypass'

$ mysql-create-db foo

| CREATE DATABASE IF NOT EXISTS foo

$ mysql-grant-db admin foo

| GRANT ALL ON foo.* TO 'admin'@'localhost'

| FLUSH PRIVILEGES

$ mysql-show-grants admin

| SHOW GRANTS FOR 'admin'@'localhost'

| Grants for admin@localhost

| GRANT USAGE ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD '*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4' |

| GRANT ALL PRIVILEGES ON `foo`.* TO 'admin'@'localhost'

$ mysql-drop-user admin

| DROP USER 'admin'@'localhost'

$ mysql-drop-db foo

| DROP DATABASE IF EXISTS foo

要使用上述命令,您需要将以下函数复制并粘贴到rc文件中(例如.bash_profile )并重新加载shell或获取文件。 在这种情况下,只需输入source .bash_profile :

# Create user in MySQL/MariaDB.

mysql-create-user() {

[ -z "$2" ] && { echo "Usage: mysql-create-user (user) (password)"; return; }

mysql -ve "CREATE USER '$1'@'localhost' IDENTIFIED BY '$2'"

}

# Delete user from MySQL/MariaDB

mysql-drop-user() {

[ -z "$1" ] && { echo "Usage: mysql-drop-user (user)"; return; }

mysql -ve "DROP USER '$1'@'localhost';"

}

# Create new database in MySQL/MariaDB.

mysql-create-db() {

[ -z "$1" ] && { echo "Usage: mysql-create-db (db_name)"; return; }

mysql -ve "CREATE DATABASE IF NOT EXISTS $1"

}

# Drop database in MySQL/MariaDB.

mysql-drop-db() {

[ -z "$1" ] && { echo "Usage: mysql-drop-db (db_name)"; return; }

mysql -ve "DROP DATABASE IF EXISTS $1"

}

# Grant all permissions for user for given database.

mysql-grant-db() {

[ -z "$2" ] && { echo "Usage: mysql-grand-db (user) (database)"; return; }

mysql -ve "GRANT ALL ON $2.* TO '$1'@'localhost'"

mysql -ve "FLUSH PRIVILEGES"

}

# Show current user permissions.

mysql-show-grants() {

[ -z "$1" ] && { echo "Usage: mysql-show-grants (user)"; return; }

mysql -ve "SHOW GRANTS FOR '$1'@'localhost'"

}

注意:如果您不想在Bash历史记录中留下跟踪(例如密码),请检查: 如何防止命令显示在bash历史记录中?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值