$ 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
7 回答
对我来说这很有效 .
哪里
spowner:用户名
1234:spowner的密码
test:数据库'spowner'具有访问权限
语法
要在MySQL / MariaDB 5.7.6及更高版本中创建用户,请使用CREATE USER syntax:
然后授予对数据库的所有访问权限(例如
my_db
),使用GRANT Syntax,例如其中ALL(priv_type)可以替换为SELECT,INSERT,UPDATE,ALTER等特定权限 .
然后重新加载新分配的权限运行:
执行
要运行上述命令,您需要运行
mysql
命令并将其键入提示符,然后通过quit
命令或Ctrl-D注销 .要从shell运行,请使用
-e
参数(将SELECT 1
替换为上述命令之一):或从标准输入打印声明:
如果您已通过上述访问被拒绝,请指定
-u
(对于用户)和-p
(对于密码)参数,或者对于长期访问,请在~/.my.cnf
中设置您的凭据,例如Shell集成
对于不熟悉MySQL语法的人来说,这里有方便的shell函数,易于记忆和使用(要使用它们,你需要加载下面包含的shell函数) .
这是一个例子:
要使用上述命令,您需要将以下函数复制并粘贴到rc文件中(例如.bash_profile)并重新加载shell或获取文件 . 在这种情况下,只需输入
source .bash_profile
:您可以使用CREATE USER语句创建新用户,并使用GRANT为其授予权限 .
如果您想要创建一个新用户,则可以使用以下命令为他提供对localhost上特定数据库(不是Mysql中的所有数据库)的所有访问权限 .
这将在localhost上向该用户授予一个数据库
test_database
(在您的情况下为dbTest
)的所有权限 .通过运行以下命令,检查上述命令向该用户发出的权限 .
以防万一,如果要限制用户只能访问一个表
创建用户并授予数据库的所有权限 .
登录MySQL:
现在创建并授予
匿名用户(仅限本地测试)
或者,如果您只想授予对数据库的完全不受限制的访问权限(例如,在本地计算机上为测试实例授予权限,则可以授予对匿名用户的访问权限,如下所示:
请注意
这适用于开发中的垃圾数据 . 不要在你关心的任何事情上这样做 .
试试这个来创建用户:
试试这个让它访问数据库
dbTest
:如果您在同一台计算机上运行访问MySQL的代码/站点,则hostname将是localhost .
现在,分解 .
GRANT
- 这是用于创建用户和授予数据库,表等权限的命令 .ALL PRIVILEGES
- 这告诉用户将拥有所有标准权限 . 但是,这不包括使用GRANT命令的权限 .dbtest.*
- 这指示MySQL应用这些权限以在整个dbtest数据库中使用 . 如果您愿意,可以用特定的表名替换*或存储例程 .TO 'user'@'hostname'
- 'user'是您正在创建的用户帐户的用户名 . 注意:您必须在那里有单引号 . 'hostname'告诉MySQL用户可以连接的主机 . 如果您只想从同一台计算机上使用它,请使用localhost
IDENTIFIED BY 'password'
- 正如您所猜测的那样,这会为该用户设置密码 .忽略 -p 选项,如果mysql用户没有密码 or 只需按"[Enter]"按钮旁路即可 . 用大括号括起来的字符串需要替换为实际值 .