mysql学习总结05 — 用户权限

mysql学习总结05 — 用户权限

1. 用户管理

mysql中所有用户信息保存在mysql数据库下的user表中。在安装mysql时,如果不创建匿名用户,那么默认用户只有root超级用户。mysql使用host(允许访问的IP或者主机地址)和user(用户名)共同组成主键来区分用户。如果host%,表示所有用户(客户端)都可访问

1.1 创建用户

两种方式:

1. 直接使用root用户在mysql.user表中插入记录(不推荐)

mysql> insert into mysql.user(Host,User,Password) values('localhost','csxiaoyao',password('000000'));

2. 使用创建用户的SQL指令

基本语法:

create user '用户名'@'主机地址' identified by '<明文密码>';

mysql> -- 创建user1
mysql> create user 'user1'@'%' identified by '123456';
mysql> -- 查看mysql.user表中是否存在新增用户
mysql> select * from mysql.user;
mysql> -- 简化版创建用户(所有用户可以访问,不需要密码)
mysql> create user user2;
mysql> -- 使用新用户登录
mysql> mysql -uuser2;

1.2 删除用户

1. 使用drop user指令

基本语法:

drop user '用户名'@'host';

2. 使用delete指令

mysql> DELETE FROM mysql.user WHERE user="csxiaoyao" and host="localhost";
mysql> flush privileges;

1.3 修改密码

注意:密码需要使用系统函数 password() 加密处理

1. 使用修改密码SQL指令

基本语法:

set password for 用户 = password('新明文密码');

mysql> set password for 'user1'@'%' = password('19931128');

2. 使用update修改表

基本语法:

update mysql.user set password = password('新明文密码') where user = '用户名' and host= '地址';

mysql> update mysql.user set password=password('19931128') where user="csxiaoyao" and host="localhost";

3. 使用mysqladmin

基本语法:

格式:mysqladmin -u用户名 -p旧密码 password 新密码

$ mysqladmin -u root password 931128 -- 初始化数据库root无密码
$ mysqladmin -u root -p931128 password 19931128

2. 权限管理

mysql中三类权限:

  1. 数据权限:增删改查( select / update / delete / insert )
  2. 结构权限:结构操作( create / drop )
  3. 管理权限:权限管理( create user / grant / revoke )

2.1 授予权限:grant

基本语法:

grant <权限列表 / all privileges> on <数据库 / >.<表名 / > to <用户@ 登录主机> identified by '<密码>';

权限列表:使用,分隔,可使用all privileges代表全部权限 ( select, insert, update, delete, create, drop, index, alter, grant, references, reload, shutdown, process, file共14个权限,可被all privileges或all代替 )

数据库.表名:可以是单表(数据库.表名),可以是具体某个数据库(数据库. ),也可以整库( . * ), . 表示赋予用户操作服务器上所有数据库所有表权限

用户地址:可以是 localhost,也可以是ip地址、机器名、域名,'%'表示从任何地址连接

mysql> -- 权限修改立即生效,不需要刷新
mysql> grant select,insert on dbTest.tbTest to 'user1'@'%';
mysql> -- user1使用show tables只能看到tbTest一张表

需要密码:

mysql> grant all PRIVILEGES on *.* to 'csxiaoyao'@'%' identified by '19931128';
mysql> flush privileges;

2.2 权限回收:revoke

基本语法:

revoke <权限列表 / all privileges> on <数据库 / >.<表名 / > from 用户;

mysql> -- 权限修改立即生效,不需要刷新
mysql> revoke all privileges on dbTest.tbTest from 'user1'@'%';

2.3 刷新权限:flush

基本语法:flush privileges;

mysql> flush privileges;

2.4 密码丢失解决方案

重置root密码(windows)

  1. 停止服务
  2. 重启服务跳过权限
  3. 直接登录
  4. 修改root用户的密码:指定 用户名@host
  5. 重启服务
$ service mysqld stop
$ mysqld –skip-grant-tables
$ mysql
mysql> update mysql.user set password = password('root') where user='root' and host='localhost';
$ flush privileges;
$ service mysqld start

# mysqld_safe --user=root --skip-grant-tables
# mysql -u root

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏禅林阆苑

mysql 配置总结( linux & macos ) 【原创】

mysql 配置总结 Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github.com/c...

3458
来自专栏Bug生活2048

mac下利用docker部署个mysql

这个不多说,直接到官网下载对应的版本安装即可,在配置docker时最好切换阿里云镜像,具体步骤不细说,可参考之前的文章 .net core开发环境搭建中有提到如...

872
来自专栏一个爱瞎折腾的程序猿

Ubuntu16.04下安装mysql

不设置将会提示错误信息:1103 -Host '192.168.1.233' is not allowed to connect to this MySQL s...

551
来自专栏烂笔头

SSDB图形界面管理工具:phpssdbadmin安装部署

目录[-] 环境: 14.04.1-Ubuntu 1、安装Nginx apt-get install nginx ubantu安装完Nginx后,文件...

3545
来自专栏菜鸟致敬

MySQL的Python语法

MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP。 在这些语言中,Mysql在PHP的web开发中是应用最广泛。 这里我们将...

3378
来自专栏swag code

MySql-8.0.11-Window10环境安装

下载地址:https://dev.mysql.com/downloads/file/?id=476233

761
来自专栏容器云生态

自动化服务配置管理平台之-Ansible总结

Ansible架构: ?     ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批...

2275
来自专栏菜鸟致敬

MySQL Python 语法

MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP。 在这些语言中,Mysql在PHP的web开发中是应用最广泛。 在本教程中...

41110
来自专栏Youngxj

网站状态批量监控源码

4014
来自专栏乐沙弥的世界

CentOS 7 基于yum方式快速搭建LAMP wordpress

LAMP是流行的经典快速部署互联网应用的标配。 它的全称是Linux+Apache+Mysql+PHP。之前写过基于CentOS6下编译以及yum方式搭建LAM...

821

扫码关注云+社区