mysql用户&权限总结,高级面试题+解析

本文总结了MySQL中创建用户、授权及权限管理的操作,包括如何创建无权限用户,分配和回收权限,以及查看用户权限的方法。对于后端开发者和面试者来说,是理解数据库权限控制的重要知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CREATE TABLE user (

Host char(60) COLLATE utf8_bin NOT NULL DEFAULT ‘’,

User char(16) COLLATE utf8_bin NOT NULL DEFAULT ‘’,

Password char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT ‘’,

Select_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Insert_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Update_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Delete_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Create_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Drop_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Reload_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Shutdown_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Process_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

File_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Grant_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

References_priv e

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

num(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Index_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Alter_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Show_db_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Super_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Create_tmp_table_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Lock_tables_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Execute_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Repl_slave_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Repl_client_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Create_view_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Show_view_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Create_routine_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Alter_routine_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Create_user_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Event_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Trigger_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

Create_tablespace_priv enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

ssl_type enum(’’,‘ANY’,‘X509’,‘SPECIFIED’) CHARACTER SET utf8 NOT NULL DEFAULT ‘’,

ssl_cipher blob NOT NULL,

x509_issuer blob NOT NULL,

x509_subject blob NOT NULL,

max_questions int(11) unsigned NOT NULL DEFAULT ‘0’,

max_updates int(11) unsigned NOT NULL DEFAULT ‘0’,

max_connections int(11) unsigned NOT NULL DEFAULT ‘0’,

max_user_connections int(11) unsigned NOT NULL DEFAULT ‘0’,

plugin char(64) COLLATE utf8_bin DEFAULT ‘mysql_native_password’,

authentication_string text COLLATE utf8_bin,

password_expired enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,

PRIMARY KEY (Host,User)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=‘Users and global privileges’;

创建用户并授权

grant all privileges on . to ‘user_name’@‘host’ identified by ‘password’ with grant option;

添加权限(和已有权限合并,不会覆盖已有权限)

GRANT Insert ON your database.* TO user@host;

  • all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。

  • on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user

  • to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:””@”192.168.0.%”,表示test这个用户只能在192.168.0IP段登录

  • identified by:指定用户的登录密码

  • with grant option:表示允许用户将自己的权限授权给其它用户

可以使用GRANT给用户添加权限,权限会自动追加,不会覆盖之前授予的权限,比如你先给用户添加一个SELECT权限,后来又给用户添加了一个INSERT权限,那么该用户就同时拥有了SELECT和INSERT权限。

1、创建用户

进入mysql数据库

use mysql;

创建用户(这个sql创建的用户是没有权限的)

create user ‘user_name’@‘host’ identified by ‘password’;

  • user_name:要创建用户的名字。

  • host:表示要这个新创建的用户允许从哪台机登陆,如果只允许从本机登陆,则 填 ‘localhost’ ,如果允许从远程登陆,则填 ‘%’

  • password:新创建用户的登陆数据库密码,如果没密码可以不写

注意:在 MySQL 里面,用户名 (user)+ 地址 (host) 才表示一个用户

查看用户权限

SHOW GRANTS FOR ‘root’@‘localhost’;

2、权限操作
2.1、分配权限

grant privileges on databasename.tablename to ‘username’@‘host’;

2.2、回收权限:

REVOKE privilege ON databasename.tablename FROM ‘username’@‘host’;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值