mysql创建管理密码_MySQL用户管理、密码修改、用户授权

本文详细介绍了MySQL的权限表结构,包括user、host、db等表的用途,以及账户管理和权限管理的方法。内容涵盖创建、删除用户,修改密码(包括root用户),授权和回收权限的操作,并提供了相关命令示例。
摘要由CSDN通过智能技术生成

目录

一、权限表

1、user表

2、host表(很少用到)

3、db表

4、tabls_priv表和columns_priv表

5、procs_priv表

二、账户管理

1、命令行登陆

2、创建普通用户

3、删除普通用户

4、root用户修改自己的密码

5、root用户修改普通用户的密码

6、root密码丢失

1、停止服务,进入bin目录

2、跳过权限验证:mysqld --skip-grant-tables

3、打开另一个管理员cmd,进入mysql的bin

4、进入mysql数据库修改密码

5、再次登陆,正常了

三、权限管理

1、权限

2、授权

3、收回权限

4、查看权限

下面是本猿的一些学习笔记

MySQL是一个多用户数据库,用户分为ROOT用户和普通用户。ROOT用户拥有所有权限,普通用户只有被授予的各种权限。

一、权限表

mysql服务器通过权限表来控制用户对数据库的访问,权限表存储在mysql数据库中,由MySQL_install_db脚本初始化。

8a86fdd34e7d767c2aa1af227f2d2dea.png

1、user表

账号表,里面的权限是全局级,一个用户在user表中被授予delete权限,则可以删除mysql服务器上所有数据库中的任何记录。

在mysql5.7.24中包含45列,分为用户列、权限列、安全列、资源控制列

用户列

Host【主机名】、User【用户名】、Password【密码】,只有三个全部匹配才能建立连接。

Host+User:表的联合主键

权限列

全局范围内允许对数据库和数据进行的操作,包括:查询、修改等普通权限【操作数据库】;关闭服务器、超级权限、加载用户等高级权限【数据库管理】

安全列

SSL:加密,包括ssl_type、ssl_cipher

SHOW VARIABLES LIKE 'have_openssl'

查看是否具有ssl功能。如果取值为DISABLED,那么则没有ssl加密功能【普通发行版】。

x509:509标准可以用来标识用户,包括x509_issuer、x509_subject

授权插件

资源控制列

max_questions:用户每小时允许执行查询次数

max_updates:用户每小时允许执行更新次数;

max_connections:用户每小时允许执行的连接次数;

max_user_connections:单个用户允许同时建立的连接次数

一小时内用户操作或者连接数量超过资源控制限制,用户将被锁定,直到下一个小时才可以执行对应的操作。

2、host表(很少用到)

存储某个主机对数据库的操作权限

用户列:Host Db (某个主机 连接的用户 操作某个数据库的权限)

3、db表

存储某个用户对数据库的操作权限,决定用户能从那个主机存取哪个数据库

用户列:Host User Db (某个主机 连接某个用户 操作某个数据库)

user表的权限是针对所有数据库,如果用户希望只对某个数据库有操作权限,那么需要将user表的对应权限设置为N,然后在db表设置对应数据库的权限

4、tabls_priv表和columns_priv表

tabls_priv对表设置权限;columns_priv对字段设置权限

5、procs_priv表

对存储过程和存储函数设置权限

二、账户管理

mysql命令

-h

主机名

指定主机名或ip,不指定默认是localhost

-u

用户名

-p

密码

后面没有内容,登陆时会提示输入密码;有内容注意密码和-p之间不能有空格

-P

端口号

默认3306

数据库名

在命令的最后指定数据库名

-e

执行SQL语句

指定了该参数,登陆后执行-e后面的命令,并退出

1、命令行登陆

mysql -h localhost -u root -p123456 test

2、创建普通用户

有两种方式:CREATE USER 或GRANT语句;直接操作Mysql授权表。新创建的用户没有任何权限。

##创建用户

create user 'jaymou'@'localhost' identified by 'pwd123456';

##创建用户并授权

grant select,update on *.* to 'testUser'@'localhost' identified by 'pwd123456';

##查看新建的用户

select * from mysql.user where user='testUser';

##直接操作mysql用户表 MySQL5.7 mysql.user表没有password字段改 authentication_string;

##,ssl_cipher,x509_issuer,x509_subject 没有默认值,需要指定

insert into mysql.user(Host,User,authentication_string,ssl_cipher,x509_issuer,x509_subject) values ('localhost','customer1','pwd123456','','','');

3、删除普通用户

##删除user

DROP user testUser,customer1;

DROP user 'testUser'@'localhost';##删除在本地登录权限

##删除来自所有授权表的账户权限记录

##使用delete删除用户

delete from mysql.user where host='localhost' and user='customer1'

4、root用户修改自己的密码

mysqladmin【会自动加密】

mysqladmin -u uasename -h localhost -p password "newpwd";

输入原密码并enter确认后,将设定新密码。

修改user表

##修改密码,password()函数用来加密用户密码;记得刷新权限

update mysql.user set authentication_string = password('123456') where User='testUser' and Host='localhost' ;

flush privileges ;

正确示范

alter user'root'@'%' IDENTIFIED BY 'mysql@2019';

错误示范

set语句修改密码:设置当前登录用户的密码

set password =password ('111111');

flush privileges ;

5、root用户修改普通用户的密码

set语句

set password for 'testUser'@'localhost' = password ('121212');

flush privileges ;

update语句修改普通用户密码

update mysql.user set authentication_string = password('111111') where User='testUser' and Host='localhost';

flush privileges ;

grant修改普通用户密码【会自动加密】【会自动刷新】

grant usage on *.* to 'testUser'@'localhost' identified by '123456';

6、root密码丢失

0、这是我的mysql服务5.7.24,可以直接右键启停

636a5e8054cc75eefcd033eb7fefc58a.png

也可在命令行启停

96efddccd60d8986e07cc49b76886d36.png

注意事项:管理员模式的命令行

5b1791496a31e8dccc8748f204371235.png

1、停止服务,进入bin目录

cd C:\Program Files\MySQL\MySQL Server 5.7\bin

2、跳过权限验证:mysqld --skip-grant-tables

d11cfe80f1252118cc9025a4032ac54d.png

3、打开另一个管理员cmd,进入mysql的bin

cd C:\Program Files\MySQL\MySQL Server 5.7\bin

输入mysql,进入以下界面

8fe442d0389010dd796f155cde1c6a94.png

4、进入mysql数据库修改密码

use mysql;

c46702f5c1c9a79ea4ff584f78ecbed6.png

修改密码并刷新权限

update mysql.user set authentication_string = password('111111') where User='root' and Host='localhost';

flush privileges;

080a6978409d5e866516e061ba82b538.png

4.1 完成数据库密码修改,但此时使用sqlyog连接mysql,发现1862错误

267bbdf34ef6c09b4b13bf955d0773e1.png

参考这篇https://www.jb51.net/article/99079.htm

同时在命令行登录mysql出现1820错误,目前在命令行只能登陆mysql,但是啥也干不了!!!

b3230f8b860ebbf7e395b4b6e9b61532.png

33bedeace5d43d4442618f12d7582797.png

参考了https://www.jianshu.com/p/2b62015f8731,使用下面的语句修改密码

alter user 'root'@'localhost' identified by '123456';

e2c599b1453285619ba0726e20a35ace.png

5、再次登陆,正常了

28057606affa8cde6be447682da128fd.png

但是好像有个问题,之前的数据库没了,没了......

三、权限管理

GRANT

REVOKE

SHOW GRANTS FOR 'user'@'localhost'

1、权限

163b05ffecf565836051ebdfdbc22f19.png

CREATE,DROP

创建新数据库和表,删除已有数据库和表

SELECT,INSERT,UPDATE,DELETE

允许在一个数据库现有的表上实施操作;SELECT权限只有在真正从一个表中检索行时才用到

INDEX

允许创建或删除索引,适用于已有表;如果具有某个表的create权限,可以在create table语句中包含索引定义

ALTER

更改表结构,重命名表

ROUTINE相关

CREATE ROUTINE 创建保存的函数和程序,ALTER ROUNTINE 更改和删除,EXECUTE 执行

GRANT

允许授权给其他用户(用于数据库,表,保存的程序)

FILE

读写服务器上的任何文件

其余

管理性操作

2、授权

层级

范围

语句

全局

适用于一个给定服务器的所有数据库

mysql.user

GRANT ALL ON *.*

REVOKE ALL ON *.*

数据库

给定数据库中所有目标

mysql.db,mysql.host

GRANT ALL ON dbname.*

REVOKE ALL ON dbname.*

给定表中所有列

mysql.tables_priv

GRANT ALL ON dbname.tb_name

REVOKE ALL ON dbname.tb_name

给定表中单一列

mysql.columns_priv

子程序级

已存储的子程序

mysql.procs

CREATE ROUTINE

ALTER ROUNTINE

EXECUTE

授权语法

GRANT 权限类型

ON 指定授权对象的作用类型[TABLE|FUNCTION|PROCEDURE] 表1,表2

TO '用户名'@'主机名' [IDENTIFIED BY PASSWORD 'pwd']

[WITH XXXX]

XXXX有以下选项

GRANT OPTION

被授权的用户可以将这些权限授予别的用户

MAX_QUERIES_PER_HOUR count

每小时可以执行count次查询

MAX_UPDATES_PER_HOUR count

每小时可以执行count次更新

MAX_CONNECTIONS_PER_HOUR count

每小时可以建立count次连接

MAX_USER_CONNECTIONS count

单个用户可以同时建立count个连接

grant select,insert on *.* to 'testUser'@'localhost' identified by '123456' with grant option ;

执行结果

85e7d712d7986172e6df539b00d34472.png

3、收回权限

revoke all privileges ,grant option

from 'testUser'@'localhost' ;

revoke 权限

on 表1,表2

from 'user'@'host';

4、查看权限

show grants for 'testUser'@'localhost';

结果

4cdb1c7f6e23d88248a1bfc6d5273d27.png

select Select_priv,Insert_priv,Update_priv,Delete_priv,Index_priv from user where User='testUser' and Host='localhost';

结果

1fba3c0e960ed4202399cd38c49dc849.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值