MySQL 新建用户,为用户授权,指定用户访问数据库
1.登录MySQL
mysql -u root -p
2.添加新用户(允许所有ip访问)
create user 'test'@'%' identified by '123456';
修改密码
设置新的root密码
如下命令
update mysql.user set authentication_string=password("mynew_password") where user="root" and host="localhost"
#test:用户名,%:所有ip地址,123456:密码
CREATE DATABASE test_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
grant all privileges on `test_db`.* to 'test'@'%' identified by '123456';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON TUTORIALS.* TO 'zara'@'localhost' IDENTIFIED BY 'zara123';
#分配特定的权限
flush privileges;
6. 修改用户的IP访问权限
use mysql;
update user set host = '%' where user ='test';
7. 授予管理员权限
grant all privileges on *.* to 'dba'@'1.2.3.4' IDENTIFIED BY 'mypassword' with grant option;
授予用户dba访问所有库和表的权限,*.* 第一个*是所有的库,第二个*是所有的表
1.2.3.4是可以访问的IP地址,
with grant option是指允许用户dba,传递其拥有的权限给其他的用户
8. 授予只读权限
grant select on *.* to 'select_only_user'@'%' IDENTIFIED BY 'your_password';
授予用户select_only_user 所有库和表的select 权限
9. 收回权限
revoke insert on *.* from 'someone'@'%';
收回用户someone的所有库和表的插入权限
revoke跟grant语法差不多,只需要把关键字 “to” 换成 “from” 即可,并且revoke语句中不需要跟密码设置。
注意:revoke可以回收所有权限,也可以回收部分权限。
10. 要废掉已经拥有的with grant option权限
revoke grant option on *.* from somebody;
11. 授予很多的权限
grant insert,select,update on test_db.test_tbl to someone@'localhost' identified by '123456';
grant 权限列表 on 数据库名.数据表名 to '用户名'@'主机' identified by '密码' with grant option;
#with grant option意味着被授权的用户可以把自己的权限再授权给其他的人
授予someone用户insert,select, update等权限
12. 查看某个用户的权限
show grants for 用户名@主机;
13. 删除用户
drop user '用户名'@'主机';
14. 刷新权限
flush privileges;
15.
如果给一个用户设置的权限过大,除了上面使用revoke回收部分权限外,还可以使用grant进行权限修改!
也就是说,grant不仅可以添加权限,也可以修改权限(实际上就是对同一'用户名'@'ip'设置权限,以覆盖之前的权限);
grant修改后的权限将覆盖之前的权限!
那么问题来了:授权后的密码是密文形式保存的,如果记不住之前授权时的密码,那么怎样保证覆盖后的权限跟之前的权限一致?
莫慌!
grant授权操作中其实不仅可以设置明文密码,也可以设置密文密码,如下:
1)grant 权限列表 on 库.表.* to 用户名@'ip' identified by "明文密码"
2)grant 权限列表 on 库.表.* to 用户名@'ip' identified by password "密文密码"
也就是说:
在grant重置权限的时候可以用查看的密文密码当做新的密码,然后去覆盖之前的权限,这就保证了修改前后的密码一致!
Mysql权限列表
权限 | 权限级别 | 权限说明 |
create | 数据库、表或索引 | 创建数据库、表或索引权限 |
drop | 数据库或表 | 删除数据库或表权限 |
grant option | 数据库、表或保存的程序 | 赋予权限选项 |
references | 数据库或表 | 外键权限 |
alter | 表 | 更改表,比如添加字段、索引、修改字段等 |
delete | 表 | 删除数据权限 |
index | 表 | 索引权限 |
insert | 表 | 插入权限 |
select | 表 | 查询权限 |
update | 表 | 更新权限 |
create view | 视图 | 创建视图权限 |
show view | 视图 | 查看视图权限 |
alter routine | 存储过程 | 更改存储过程权限 |
create routine | 存储过程 | 创建存储过程权限 |
execute | 存储过程 | 执行存储过程权限 |
file | 服务器主机上的文件访问 | 文件访问权限 |
create temporary tables | 服务器管理 | 创建临时表权限 |
lock tables | 服务器管理 | 锁表权限 |
create user | 服务器管理 | 创建用户权限 |
proccess | 服务器管理 | 查看进程权限 |
reload | 服务器管理 | 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限 |
replication client | 服务器管理 | 复制权限 |
replication slave | 服务器管理 | 复制权限 |
show databases | 服务器管理 | 查看数据库权限 |
shutdown | 服务器管理 | 关闭数据库权限 |
super | 服务器管理 | 执行kill线程权限 |
相关文章
- MySQL数据库数据视图
- MySQL数据库中字段的分割技巧(mysql字段分割)
- 支持MySQL数据库的必要性(是否支持mysql)
- MySQL中联表删除数据的技巧(mysql联表删除)
- 数据库使用C语言连接MySQL数据库(c语言访问mysql)
- MySQL数据库压缩:简单、安全、有效(mysql数据库压缩)
- MySQL创建用户的简单步骤(mysql如何创建用户)
- MySQL视图:基础教程指南(mysql视图教程)
- MySQL建立新表:步骤指南(mysql建立新表)
- 用户MySQL用户如何快速下载软件(下载mysql)
- Mysql数据库设计方案简述(mysql数据库设计方案)
- 攻击MySQL防护:单句防止木马攻击(mysql一句话木马)
- MySQL数据库中运行存储过程的简单指南(mysql运行存储过程)
- Mysql数据库版本查看方法简介(mysql数据库版本查看)
- 如何优化MySQL的CPU和内存占用?(mysqlcpu内存)
- 阿里推出MySQL中间件:解决数据库性能问题(阿里 mysql中间件)
- 让MySQL数据库查询更快利用MySQL索引加速数据库查询(mysql 创建索引)
- 如何正确使用MySQL数据库(如何使用mysql数据库)
- 启动MySQL数据库,开启你的网络世界(启动 mysql 数据库)
- 极致保障:MySQL备份所有数据库(mysql备份所有数据库)
- MySQL数据库1053错误解决方案(mysql中1053错误)
- 使用NET来连接MySQL数据库的简单方法(.net怎么连mysql)
- 解决MySQL数据库不在集合内的问题(mysql不在集合内)
- MySQL下载须登录身份验证(mysql下载要登录)
- MySQL 下载 ODBC方便管理数据库(mysql下载odbc)
- MYSQL命令行模式管理MySql的一点心得
- mysql数据库插入速度和读取速度的调整记录