河北网站seo策划,国际知名工程咨询公司,网站单页seo,新型城镇化建设网站文章目录创建新用户使用 CREATE USER 语句创建用户创建新用户#xff0c;并且使用哈希值设置密码创建一个只能在数据库所在主机访问数据库的用户创建一个只能从指定 IP 连接数据库的用户创建一个可以从任意 IP 连接数据库的用户创建一个没有密码的用户在 mysql.user 表中添加用…
文章目录创建新用户使用 CREATE USER 语句创建用户创建新用户并且使用哈希值设置密码创建一个只能在数据库所在主机访问数据库的用户创建一个只能从指定 IP 连接数据库的用户创建一个可以从任意 IP 连接数据库的用户创建一个没有密码的用户在 mysql.user 表中添加用户使用 GRANT 语句创建用户创建一个对所有数据库拥有查询权限的用户创建一个对某个数据库拥有全部权限的用户创建一个对某个数据库拥有部分权限的用户创建一个对某个数据库拥有部分权限的用户但是该用户可以从任意 IP 登录数据库创建用户时使用密文设置密码创建一个对某个数据表拥有部分权限的用户修改用户修改密码使用 rename 语句修改用户名和主机使用 update 语句修改主机名称删除用户创建新用户
MySQL 在安装时会默认创建一个名为 root 的用户该用户拥有超级权限可以控制整个 MySQL 服务器。
在对 MySQL 的日常管理和操作中为了避免有人恶意使用 root 用户控制数据库我们通常创建一些具有适当权限的用户尽可能地不用或少用 root 用户登录系统以此来确保数据的安全访问。
MySQL 提供了以下三种方法创建用户
1.使用 CREATE USER 语句创建用户 2.使用 INSERT INTO 语句直接往 mysql.user 表中添加用户 3.使用 GRANT 语句创建用户
1.MySQL 的用户表示格式为user_namehost也就是说【用户名主机名】必须唯一。关于 host 的详解请参见《MySQL的用户表user》。
2.如果两个用户的用户名相同但主机名不同MySQL 会将它们视为两个用户并允许为这两个用户分配不同的权限集合。
3.新创建的用户默认拥有数据库 information_schema 只读权限默认拥有数据库 test 全部的权限而且还无法撤销这些权限。
使用 CREATE USER 语句创建用户
创建用户的命令语句格式如下
mysql CREATE USER user_namehost IDENTIFIED BY password; # 密码必须加引号
mysql CREATE USER user_name IDENTIFIED BY password; # host默认为%
mysql CREATE USER user_name; # host默认为%没有密码
mysql CREATE USER user_namelocalhost IDENTIFIED BY password; # 用户名和主机名将引号省略掉
mysql CREATE USER user_name% IDENTIFIED BY password; # 主机名含有%必须加引号才可以;%表示任意IP地址说明: 1.user_name 指定要创建的用户名用户名必须要有用户名的引号可以省略 2.host 指定登录数据库的主机名即指定该用户在哪个主机上可以登陆通常是主机的 IP 地址。如果是本地用户可用 localhost如果想让该用户可以从任意远程主机登陆可以使用通配符 % 3.创建用户时只指定了用户名而没指定主机名那么主机名默认为 %表示对所有主机开放权限 4.创建用户时主机名除非含有 %否则可以省略引号 4.password 指定登陆密码密码可以为空如果为空则该用户可以不需要密码登陆数据库密码必须加上引号
创建新用户并且使用哈希值设置密码
在实际应用中我们应避免明文指定密码可以通过 PASSWORD 关键字使用密码的哈希值设置密码。
在 MySQL 中可以使用 password() 函数获取密码的哈希值。例如查看 123456 哈希值的 SQL 语句如下
mysql select password(123456);
-------------------------------------------
| password(123456) |
-------------------------------------------
| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
-------------------------------------------
1 row in set, 1 warning (0.00 sec)*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 就是字符串“123456”的哈希值接着创建用户时使用哈希值作为密码
mysql CREATE USER testlocalhost IDENTIFIED BY PASSWORD *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9;
Query OK, 0 rows affected, 1 warning (0.00 sec)用户创建成功后就可以使用密码“123456”登录了。
创建一个只能在数据库所在主机访问数据库的用户
例如创建一个名为 linux 的用户该用户只能在数据库服务器所在主机访问数据库登录密码为123456。
mysql CREATE USER linuxlocalhost IDENTIFIED BY 123456;注意 1.127.0.0.1 表示只能通过该 IP 地址连接数据库服务器不可以使用 localhost 连接即使 localhost 指向 127.0.0.1 也不行 2.localhost 表示可以使用 localhost 连接数据库服务器也可以使用 127.0.0.1 连接数据库服务器
创建一个只能从指定 IP 连接数据库的用户
mysql CREATE USER pig192.168.1.101 IDENTIFIED BY 123456; 创建一个可以从任意 IP 连接数据库的用户
mysql CREATE USER pig% IDENTIFIED BY 123456;
mysql CREATE USER root% IDENTIFIED WITH mysql_native_password BY 123456; 无法执行
mysql CREATE USER root% IDENTIFIED BY 123456;
mysql GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION; 创建一个没有密码的用户
mysql CREATE USER pig% IDENTIFIED BY ;
mysql CREATE USER pig%; 在 mysql.user 表中添加用户
可以使用 INSERT 语句将用户的信息添加到 mysql.user 表中但必须拥有对 mysql.user 表的 INSERT 权限。通常 INSERT 语句只添加 host、user 和 authentication_string 这 3 个字段的值。
MySQL 5.7 的 user 表中的密码字段从 password 变成了 authentication_string如果你使用的是 MySQL 5.7 之前的版本将 authentication_string 字段替换成 password 即可。
使用 INSERT 语句创建用户的代码如下
mysql INSERT INTO mysql.user(host, user, authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES (host, user_name, PASSWORD(password), , , );由于 mysql 数据库的 user 表中ssl_cipher、x509_issuer 和 x509_subject 这 3 个字段没有默认值所以向 user 表插入新记录时一定要设置这 3 个字段的值否则 INSERT 语句将不能执行。
下面使用 INSERT 语句创建名为 lwx 的用户主机名是 localhost密码也是 123456。SQL 语句如下
mysql INSERT INTO mysql.user(host, user, authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES (localhost, lwx, PASSWORD(lwx), , , );
Query OK, 1 row affected, 1 warning (0.02 sec)结果显示新建用户成功。但是这时如果通过该账户登录 MySQL 服务器不会登录成功因为 lwx 用户还没有生效。
可以使用 FLUSH 命令让用户生效命令如下
mysql FLUSH PRIVILEGES;使用以上命令可以让 MySQL 刷新系统权限相关表。执行 FLUSH 命令需要 RELOAD 权限。
注意 1.密码必须使用函数 password() 转换成哈希值如果不是要这个函数直接将密码字符串存储到字段 authentication_string 中使用的时候根本无法使用因为在登录数据库的时候 mysql 命令会自动将输入的密码串转换成哈希值再和 user 表中的 authentication_string 字段的值进行比较
2.user 字段值区分大小写如果你设置的是大写字母那么登录时输入的也必须是大写字母
3.host 字段值区分大小写如果字段值含有大写字母用户创建成功后无法使用命令 drop user 语句删除但是在登录时候则没有大小写限制。
例如添加用户时你将 host 的值指定为 lOcalhost如下所示
mysql INSERT INTO mysql.user(host, user, authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES (lOcalhost, lwx, PASSWORD(lwx), , , );创建成功后你可以正常登录数据库
mysql [roothtlwk0001host ~]# mysql -hlocalhost -ulwx -plwx;但是无法使用 drop user 语句删除
mysql drop user lwxlOcalhost;
Query OK, 0 rows affected (0.00 sec)mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)mysql select user,host,authentication_string from mysql.user;
------------------------------------------------------------------------
| user | host | authentication_string |
------------------------------------------------------------------------
| root | localhost | *6969E01196B0CE74725D5CD9F8C58F1D7529C352 |
| root | liaowenxiong | *6969E011096ECE74725D5CD9F8C58F1D7529C352 |
| root | 127.0.0.1 | *6969E01196BECE74725D5CD9F8C58F1D7529C352 |
| root | ::1 | *6969E01196BECE74725D5CD9F8C58F1D7529C352 |
| qppdd | % | *E076A4B08AE3A5232C8C9A2E8F66453026E6DDC4 |
| qsspw | % | *F252153EE4DB6A240EF45B402E625E901D052B38 |
| qsspw | localhost | *F252153EE4DB6A240EF45B402E625E901D052B38 |
| zentao | 127.0.0.1 | *BB2C46D0478D229369733842BB14115A52D901C6 |
| root | % | *6969E01196BECE74725D5CD9F8C58F1D7529C352 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| lwx | lOcalhost | *95A0014C845E6CF09BDE5EA63128614AF92E6C8F |
------------------------------------------------------------------------
12 rows in set (0.00 sec)使用 GRANT 语句创建用户
虽然 create user 和 insert into mysql.user 语句都可以创建普通用户但是这两种方式不便授予用户权限而 grant 语句可以在创建新用户的同时给用户授权。
注通过命令 grant 创建用户时必须加上 identified by 语句而且密码必须加引号。
创建一个对所有数据库拥有查询权限的用户
下面使用 grant 语句创建名为 lwx 的用户主机名为 localhost密码为 lwx。该用户对所有数据库的所有表都有 select 权限。SQL 语句如下所示
mysql GRANT SELECT ON *.* TO lwxlocalhost IDENTIFIED BY lwx;
Query OK, 0 rows affected, 1 warning (0.01 sec)创建一个对某个数据库拥有全部权限的用户
创建一个名为 lwx 的新用户登录密码为 123456该用户可以从 192.168.0.0 ~ 192.168.0.255 之间的网段访问数据库。该用户对数据库 test 拥有全部的权限
mysql grant all on test.* to lwx192.168.0.% identified by 123456;创建一个对某个数据库拥有部分权限的用户
mysql grant select,insert,update on db_name.* to user_namehost_name identified by password;创建一个对某个数据库拥有部分权限的用户但是该用户可以从任意 IP 登录数据库
mysql grant select,insert,update,delete on test.* to lwx% identified by password;表示创建一个新用户 lwx登录密码是 password该用户可以在任意 IP 地址登陆数据库系统但是该用户只能对数据库 test 的数据进行查询操作、插入操作、更新操作、删除操作。
创建用户时使用密文设置密码
在创建用户时也可以使用密文密码你需要通过函数 password() 先获得密文密码再使用关键词 PASSWORD 设置例如获取字符串 123 的密文
mysql select password(123);
-------------------------------------------
| password(123) |
-------------------------------------------
| *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
-------------------------------------------
1 row in set, 1 warning (0.00 sec)获取到密文密码后通过关键词 PASSWORD 设置密码
mysql GRANT SELECT ON *.* TO lwxlocalhost IDENTIFIED BY PASSWORD *23AE809DDACAF96AF0FD78ED04B6A265E05AA257;创建成功后该用户就可以使用密码 123 登录数据库了
创建一个对某个数据表拥有部分权限的用户
mysql grant update,delete on db_name.tbl_name to user_namehost_name identified by password;修改用户
修改密码
语法格式
mysql SET PASSWORD FOR user_namehost PASSWORD(newpassword);修改当前登陆用户自己的密码的语法格式
mysql SET PASSWORD PASSWORD(newpassword); 例如将用户 pig% 的密码改成 123456
mysql SET PASSWORD FOR pig% PASSWORD(123456); 也可以直接通过用户表修改密码
mysql update mysql.user set passwordpassword(new_password) where useruser_name and hosthost_name;使用 rename 语句修改用户名和主机
语法格式
rename user user_namehost to newuser_namenew_host;使用 update 语句修改主机名称
如果要对用户所用的登录终端登录 IP 地址进行限制可以更新 user 表中相应用户的 host 字段
update user set host37.164.59.204 where userlwx;删除用户
mysql DROP USER user_namehost上面的命令将删除用户帐户及其权限。