mysql如何创建新用户
2023-07-20
创建新用户
我们介绍如何设置新用户的帐号详细信息、帐号限制和 SSL 设置。
“常规”选项卡
点击对象工具栏上的“新建用户”按钮将打开无标题的用户选项卡。它包含五个选项卡,分别为“常规”、“高级”、“服务器权限”、“权限”和“SQL 预览”。我们已在第 1 部分中介绍了“常规”选项卡,但我们将在此快速回顾一下。在“常规”选项卡上,我们需要提供:
“用户名”
数据库“主机”
加密“插件”。从下拉列表中选择“mysql_native_password”或“sha256_password”
“密码”
“密码过期策略”
设置密码策略
DEFAULT:将密码过期时间长度设置为数据库的默认值。在版本 5.7.11 之前,默认值为 360 天。从版本 5.7.11 开始,默认值为 0 天,这能有效地禁用自动密码过期。
IMMEDIATE:使帐号密码过期,从而强制用户更新它。
INTERVAL:指定当前密码过期的天数。
NEVER:允许当前密码无限期保持有效状态。对脚本和其他自动化过程很有用。
MySQL 允许数据库管理员手动设置帐号密码过期,并使用 MySQL mysql_native_password 或 sha256_password 内置身份验证插件建立自动密码过期的策略。
Navicat 通过下拉列表提供几个选项,摘要了使用 PASSWORD EXPIRE 语句设置密码到期的常用 MySQL 机制。他们是:
这里举一个例子:
一个帐号每小时可以发出的查询数。
一个帐号每小时可以发出的更新数。
一个帐号每小时可以连接到服务器的次数。
一个帐号可连接到服务器的总数。
“高级”选项卡
你可以在此处找到帐号限制和 SSL 的设置。
帐号限制
MySQL 允许限制个人帐号使用各种服务器资源,以避免任何一个用户独占资源。限制包括:
这些等同于高级选项卡中的字段:“每小时最大查询数”、“每小时最大更新数”、“每小时最大连接数”和“最大用户连接数”。这些字段每一个都接受零(0)或正整数的值。
SSL 设置
要使用加密连接,系统中必须有 OpenSSL 或 yaSSL。此外,MySQL 服务器需要使用 TLS 支持构建,并正确配置为使用 OpenSSL 或 yaSSL 的其中一个。请注意,术语 SSL,指的是在 TLS 之前的现在不安全的旧协议。尽管 MySQL 仅使用其更安全(TLS)的后继协议,但出于兼容性原因仍在许多变量名和选项中使用。
“SSL 类型”下拉字段映射到 mysql.user 表的 ssl_type 列,该列仅接受某些值:ANY、SPECIFIED 和 X509(以及 '' 表示 NONE)。
此外,MySQL GRANT 语句还接受 ISSUER、SUBJECT 和 CIPHER 选项。这些选项可以按任何顺序组合在一起,而且如果你使用它们中的任何一个,则 REQUIRE X509 是隐式的。
这是一个 GRANT 语句,紧接着等效的 Navicat“高级”选项卡:
GRANT USAGE ON *.* TO 'bob_s'@'localhost' REQUIRE SUBJECT '/CN=http://www.mydom.com/O=My Dom, Inc./C=US/ST=Oregon/L=Portland' AND ISSUER '/C=FI/ST=Somewhere/L=City/ O=Some Company/CN=Peter Parker/emailAddress=p.parker@marvel.com' AND CIPHER 'SHA-DES-CBC3-EDH-RSA';
1.新建用户
1.1 登录MYSQL:
@>mysql -u root -p
@>密码
1.2 创建用户:
mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
这样就创建了一个名为:test 密码为:1234 的用户。
注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
1.3 然后登录一下:
mysql>exit;
@>mysql -u test -p
@>输入密码
mysql>登录成功
2.为用户授权
授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
2.1 登录MYSQL(有ROOT权限),这里以ROOT身份登录:
@>mysql -u root -p
@>密码
2.2 首先为用户创建一个数据库(testDB):
mysql>create database testDB;
2.3 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限):
mysql>grant all privileges on testDB.* to test@localhost identified by '1234';
mysql>flush privileges;//刷新系统权限表
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
2.4 如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on testDB.* to test@localhost identified by '1234';
mysql>flush privileges; //刷新系统权限表
2.5 授权test用户拥有所有数据库的某些权限:
mysql>grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";
//test用户对所有数据库都有select,delete,update,create,drop 权限。
//@"%" 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。)
//对localhost授权:加上一句grant all privileges on testDB.* to test@localhost identified by '1234';即可。