数据库用户管理

本文详细介绍了MySQL数据库中的用户管理,包括新建、查看、重命名、删除用户以及修改密码的方法。同时涵盖了用户授权和权限控制,包括授予权限、撤销权限以及对不同数据类型的解释。
摘要由CSDN通过智能技术生成

目录

一、数据库用户管理

1.1 新建用户

1.2 查看用户信息

1.3 重命名指定

1.4 删除用户

1.5 修改当前密码

1.6 修改其他用户密码

二、数据库用户授权

查看权限

撤销权限

扩展:mysql数据类型

1.数值类型

2.日期和时间类型

3.字符串类型


一、数据库用户管理

1.1 新建用户

create  user  '用户名'@'来源地址'  [identified  by  [password] '密码'];

  • '用户名':指定将创建的用户名.
  • '来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%
  • '密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密
  • 若使用加密密码,需要先使用SELECT PASSWORD('密码');获取密文,再在语句中PASSWORD '密文';若省略“IDENTIFIED BY"部分,则用户的密码将为空(不建议使用)

明文:

create user 'wang'@'localhost' identified by '123456';

密文:

select password ('123456');

create user 'lisi'@'localhost' identified by password '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';

1.2 查看用户信息

创建后的用户保存在mysql 数据库的user表里

use  mysql;

select  User,authentication_string,Host from user;

1.3 重命名指定

rename user 'lisi'@'localhost'  to  'zhangsan'@'localhost';

1.4 删除用户

drop  user  'zhangsan'@'localhost';

1.5 修改当前密码

set  password = password('abc123');

1.6 修改其他用户密码

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

忘记root密码的解决办法

修改/etc/my.cnf 配置文件,免密登陆mysql

vim /etc/my.cnf

-----在[mysqld]下面添加-------

skip-grant-tables     #添加,使登录mysql不使用授权表

systemctl restart mysqld

mysql      #直接登录

set password for 'root'@'localhost' = password('abc123');

或者

update mysql.user set authentication_string = password('abc123') where User='root';

flush privileges;

quit

mysql -u root -pabc123

PS:最后再把/etc/my.cnf 配置文件里的skip-grant-tables 删除,并重启mysql服务

二、数据库用户授权

授予权限

grant 提权

grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' [identified by '密码'];

#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select, insert, update”。
使用"all"表示所有权限,可授权执行任何操作。


#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符"*"。
例如,使用“kgc.*"表示授权操作的对象为school数据库中的所有表。


#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址
可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,
如“%.xyw.com"、“192.168.80.%”等。


#IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。
在新建用户时,若省略“IDENTIFIED BY"部分,则用户的密码将为空。

例子:

允许用户 wang 在本地查询 jntm 数据库中所有表的数据记录,
但禁止查询其他数据库中的表的记录。

grant select on jntm.* to 'wang'@'localhost' identified by 'abc123';

#允许用户 lisi 在 192.168.80.1 远程连接mysql,并拥有所有权限

grant all privileges on *.* to 'lisi'@'192.168.80.1' identified by '123456';

注意:这里的IP地址应该是vm8的IP地址,不是虚拟机的IP地址。

(这样就只能远程连接不能本地访问了)

测试连接:navicat

#允许用户 lisi 在所有终端远程连接mysql,并拥有所有权限

grant all privileges on *.* to 'lisi'@'%' identified by '123456';

这样既可以本地连接,又可以本地访问。

注意在使用navicat 连接数据库的时候,还是用虚拟机的ip地址

授权用户权限是all privilege。这个all privilege都有哪些权限?all privilege权限如下:

insert(插入数据)
select (查询数据)
update (更新表的数据)
delete(删除表中数据)
create (创建库,表)
drop(删除库,表)
refernces(定义外键约束)
index(建立索引)
alter(更改表属性)
create temp orary tableslock tables (锁表)
execute (执行SQL语句或调用存储过程)
create view (创建视图)
show view(显示视图)
create routine(创建存储过程)
alter routine(修改存储过程)
event(事件)
trigger on(创建触发器)

查看权限

show grants for  '用户名'@'来源地址';

撤销权限

revoke  权限列表  on  数据库名 .表名  from  '用户名'@'来源地址';

revoke all on jntm.* from 'wang'@'%'; 

#USAGE权限只能用于数据库登陆,不能执行任何操作; USAGE权限不能被回收,即REVOKE不能删除用户。

在数据库管理系统中,USAGE 权限是一个基础权限级别,它允许用户对数据库对象进行基本的识别和访问,但并不提供对数据的实际操作权限。不同数据库系统中,USAGE 权限的具体含义略有不同

扩展:mysql数据类型

MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。

MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

1.数值类型

        MySQL 支持所有标准 SQL 数值数据类型。

        这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。

        关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

        BIT数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB表。

        作为 SQL 标准的扩展,MySQL 也支持整数类型 TINYINT、MEDIUMINT 和 BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

类型大小范围(有符号)范围(无符号)用途
TINYINT1 Bytes(-128,127)(0,255)小整数值
SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 Bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度 浮点数值
DOUBLE8 Bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度 浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

2.日期和时间类型

表示时间值的日期和时间类型为datetime、date、timestamp、time和year。

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

TIMESTAMP类型有专有的自动更新特性,将在后面描述。

类型大小 ( bytes)范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:00/2038结束时间是第 **2147483647** 秒,北京时间 **2038-1-19 11:14:07**,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYYMMDD HHMMSS混合日期和时间值,时间戳

3.字符串类型

        字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

类型大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

        注意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

        CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

        BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

        BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。

        有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值