一、用户管理
mysql用户管理即用户的增删改查操作。
1、创建用户
insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
这样就创建了一个名为:test 密码为:1234 的用户。此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
2、删除用户
Delete FROM user Where User='test' and Host='localhost';
flush privileges;
drop database testDB; //删除用户的数据库
删除账户及权限:>drop user 用户名@'%';
>drop user 用户名@ localhost;
3、修改用户密码
第一种:update mysql.user set password=password('新密码') where User="test" and Host="localhost";
第二种:mysqladmin -u -username -p password "new_password"
忘记密码:如果root用户密码丢失了,会给用户造成很大的麻烦。但是,可以通过某种特殊方法登录到root用户下,然后修改密码。
a、使用--skip-grant-tables选项启动MySQL服务
该选项将使MySQL服务器停止权限判断,任何用户都能够访问数据库。
在Windows操作系统下,使用mysqlid或mysqlid-nt来启动MySQL服务。
mysqld命令:
mysqld --skip-grant-tables
mysqld-nt命令:
mysqld-nt --skip-grant-tables
net start mysql命令:
net start mysql --skip-grant-tables
b、登录root用户,并且设置新密码
mysql -u root
必须使用UPDATE语句更新mysql数据库下的user表,而不能使用SET语句,因为--skip-grant-tables不能使用SET语句。
修改完密码以后,FLUSH PRIVILEGES语句加载权限表,新密码即生效。
4、查看用户
use mysql; select * from user;
二、用户授权
授权命令常用格式如下:
命令 | 作用 |
---|---|
GRANT 权限 ON 数据库.表单名称 TO 用户名@主机名 | 对某个特定数据库中的特定表单给予授权。 |
GRANT 权限 ON 数据库.* TO 用户名@主机名 | 对某个特定数据库中的所有表单给予授权。 |
GRANT 权限 ON *.* TO 用户名@主机名 | 对所有数据库及所有表单给予授权。 |
GRANT 权限1,权限2 ON 数据库.* TO 用户名@主机名 | 对某个数据库中的所有表单给予多个授权。 |
GRANT ALL PRIVILEGES ON *.* TO 用户名@主机名 | 对所有数据库及所有表单给予全部授权,(谨慎操作)。 |
1、查看权限:show grants for '用户'@'IP地址' 2、授权grant 权限 on 数据库.表 to '用户'@'IP地址' 3、取消授权revoke 权限 on 数据库.表 from '用户名'@'IP地址' 授权实例如下:grant all privileges on db1.tb1 TO '用户名'@'IP' grant select on db1.* TO '用户名'@'IP' grant select,insert on *.* TO '用户名'@'IP'
grant select,insert on *.* TO '用户名'@'%' revoke select on db1.tb1 from '用户名'@'IP'
例子:
授权root用户拥有所有数据库的所有权限(某个数据库的所有权限):
mysql>grant all privileges on *.* to root@localhost identified by '123456';
mysql>flush privileges;//刷新系统权限表
三、用户权限
MySQL权限如下表
权限名字 | 权限说明 | Context |
---|---|---|
CREATE | 允许创建新的数据库和表 | Databases, tables, or indexes |
DROP | 允许删除现有数据库、表和视图 | Databases, tables, or views |
GRANT OPTION | 能够把自己获得的权限转赠给其他用户一个副本 | Databases, tables, or stored routines |
LOCK TABLES | 允许使用显式锁表的语句锁表,前提是你必须有SELECT权限 | Databases |
REFERENCES | MySQL 5.7.6之前引用特权是未使用的。5.7.6,创建一个外键约束需要引用父表的特权。 | Databases or tables |
EVENT | The EVENT privilege is required to create, alter, drop, or see events for the Event Scheduler. | Databases |
ALTER | 允许修改权限或重命名表 | Tables |
DELETE | 允许从表中或数据库中删除行 | Tables |
INDEX | 允许创建或删除索引 | Tables |
INSERT | 允许在表和数据库中插入行 | Tables or columns |
SELECT | 允许在表和数据库这查询行 | Tables or columns |
UPDATE | 允许在表和数据空中更新行 | Tables or columns |
CREATE TEMPORARY TABLES | 允许创建和使用临时表 | Tables |
TRIGGER | 允许使用触发器相关,前提是你必须拥有这个表的CREATE、DROP、EXECUTE或者Display权限 | Tables |
CREATE VIEW | 允许使用CREATE VIEW语句 | Views |
SHOW VIEW | 允许使用SHOW VIEW语句 | Views |
ALTER ROUTINE | ALTER ROUTINE允许你修改存储过程(过程或函数)前提是你需要在存储过程上拥有ALTER或DROP权限 | Stored routines |
CREATE ROUTINE | ALTER ROUTINE允许你创建存储过程(过程或函数)前提是你需要在存储过程上拥有ALTER或DROP权限 | Stored routines |
EXECUTE | 允许你执行存储过程(过程或函数) | Stored routines |
FILE | 文件读写权限允许你文件在服务器主机上使用LOAD DATA INFILE and SELECT 语句以及LOAD DATA()函数 | File access on server host |
CREATE TABLESPACE | 允许创建表空间,前提是你需要CREATE、ALTER OR DROP tablespaces 以及属于log file 组 | Server administration |
CREATE USER | 允许使用ALTER USER, CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES 语句 | Server administration |
PROCESS | 允许使用SHOW PROCESSLIST or mysqladmin processlist看到线程属于其他账户,你总能看到自己的线程。PROCESS权限还允许使用SHOW ENGINE语句 | Server administration |
PROXY | Server administration | |
RELOAD | 允许使用FLUSH语句,以及mysqladmin命令中对于FLUSH的操作例如:flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, and reload. | Server administration |
REPLICATION CLIENT | 是否有权限去请求复制相关主数据库产生的事件的,允许显示的使用SHOW MASTER STATUS, SHOW SLAVE STATUS, and SHOW BINARY LOGS语句 | Server administration |
REPLICATION SLAVE | 是否能够创建连接以复制的方式,连接至数据库服务器端 | Server administration |
SHOW DATABASES | 允许使用SHOW DATABASES来查看所有数据库列表,如果没有这个权限则只能查看规定数据库 | Server administration |
SHUTDOWN | 允许使用SHUTDOWN语句,mysqladmin shutdown命令,以及mysql_shutdown()API函数 | Server administration |
SUPER | 超级特权可以用于终止其他会话或改变服务器运行。属于特别高级别的一类权限 | Server administration |
USAGE | 无权限,当您想要创建一个没有权限的用户时,可以指定USAGE | Server administration |
ALL PRIVILEGES | 所有权限: ALL PRIVILEGES,可以简写为ALL | Server administration |
四、MySql设置远程访问权限
1.本地mysql客户端连接mysql
mysql -u root -p
2.执行sql语句:
代码语言:javascript复制--使用mysql系统数据库
use mysql;
--配置192.168.1.10可以通过root:123456访问数据库
GRANT ALL PRIVILEGES ON *.* to 'root'@'192.168.1.10' identified by '123456';
--配置所有ip可以通过root:123456访问数据库
grant all privileges on *.* to root@'%' identified by "123456";
--从mysql数据库中的授权表重新载入权限
flush privileges;
--查看用户权限是否变更
select * from user;
3.远程访问权限已经配置完成。