前言
Mysql数据库中的口令存储必须用password()函数加密,因为在mysql库中的user表中是以加密形式存储口令,而不是纯文本。
mysql创建用户的方法分成三种:INSERT USER表的方法、CREATE USER的方法、GRANT的方法。账号名称的构成方式
账号的组成方式:用户名@主机(所以可以出现重复的用户名,跟其他的数据库不一样)
用户名:16字符以内
主机名:可以用主机名和IP地址,也可以用通配符。
通配符说明:192.168.166.%(IP地址为192.168.166段的所有IP地址都可以访问)
脚本:CREATE USER 'username'@'host' [IDENTIFIED BY 'PASSWORD'] 其中密码是可选项
一、创建用户
-- 创建数据库名为'db_test'
CREATE DATABASE db_test;
-- 创建用户名为'user',密码为'passwd'
CREATE USER user IDENTIFIED BY 'passwd';
-- 创建用户名为'user',所有的IP地址都可以使用
CREATE USER 'user'@'%';
-- 创建用户名为'user'是不限制用户访问的IP也就是'%',密码为'passwd'
CREATE USER 'user'@'%' IDENTIFIED BY 'passwd';
-- 创建用户名为'user',只能本地访问,密码为'passwd'
CREATE USER user@'localhost' IDENTIFIED BY 'passwd';
-- IP地址为192.168.166段的所有IP地址都可以使用'user'用户,密码为'passwd'远程访问所有的数据库
CREATE USER 'user'@'192.168.166.%' IDENTIFIED BY "passwd";
二、设置密码
1.管理员身份打开cmd命令窗口,在shell下直接使用:
-- 设置'root'用户的密码为'new_passwd',旧密码为'old_passwd'
mysqladmin -u root -p password new_passwd old_passwd
2.用root 进入mysql后 :
-- 修改root用户的密码为'your password'
set password =password('your password');
flush privileges;
-- 修改用户'user'的密码为'new_passwd'
set password for user = password("your new_passwd");
flush privileges;
-- 修改用户'user'的密码为'new_passwd'
set password for user@'%'= Password('your new_passwd');
flush privileges;
-- 创建/修改用户
use mysql;
insert into user(host,user,password) values('%','user_name',password("your password");
flush privileges;
3.使用GRANT语句,在创建一个用户时直接设置密码,grant语句将自动加密口令:
-- 所有的地址都可以使用user用户,确认密码为'your password'远程访问所有的数据库
grant all on *.* to user@% IDENTIFIED BY "your password";
flush privileges;
-- 本地可以使用'root'用户,确认密码为'your password' 使用GRANT选项
grant all on *.* to 'root'@'localhost' IDENTIFIED BY 'your password' WITH GRANT OPTION;
flush privileges;
4.进入mysql库修改user表 :
use mysql;
update user set password=password('你的密码') where user='root';
flush privileges;
三、授权
-- 授权'user'用户可以操作'db_test'库的所有权限
GRANT ALL PRIVILEGES on db_test.* TO user@'%';
-- 授权用户'user'可以操作'db_test'库的所有权限,密码为'passwd'
GRANT ALL PRIVILEGES ON db_test.* TO user@'%' IDENTIFIED BY 'passwd';
-- 授权user可以操作db_test库的指定的权限
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, REFERENCES, INDEX, ALTER ON db_test.* TO user@'%';
-- 刷新权限
FLUSH PRIVILEGES;
重载授权表 管理员身份打开cmd命令窗口,在shell下直接使用:
mysqladmin -u root reload
或者
mysqladmin -u root flush-privileges
四、删除用户
-- 删除授权
revoke privileges (columns) on what from user;
revoke all PRIVILEGES ON `db_taxi_mang`.* from 'utm'@'%';
-- 删除用户 方法一
delete from mysql.user where user='user' and host='%';
-- 删除用户 方法二
DROP USER 'username'@'host';
-- 删除数据库
DROP DATABASE db_test;
五、查看
-- 查询用户、地址 在mysql的'user'表中
SELECT USER,HOST FROM mysql.user;
六、修改
-- 修改数据库名
RENAME DATABASE olddbname TO newdbname;
附:相关资料
https://blog.csdn.net/hbhcxs/article/details/78564262
https://blog.csdn.net/phoenixdsf/article/details/3914038
转载请注明出处:BestEternity亲笔。