navicat一键收回权限语句_浅谈MySQL权限管理

在我们安装完数据库后,只能在本地登录数据库,当进行远程登录时,会提示我们错误。这时,我们就要进行相应的配置,给特定的用户赋予特定的操作权限。MySQL中使用GRANT命令和REVOKE命令来管理用户的权限。

查看用户的权限:

(1):查看当前用户的所有权限(示例中使用root用户登录),使用show grants命令:

mysql> show grants \G

*************************** 1. row ***************************

Grants for root@localhost: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`localhost` WITH GRANT OPTION

*************************** 2. row ***************************

Grants for root@localhost: GRANT BACKUP_ADMIN,BINLOG_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SET_USER_ID,SYSTEM_VARIABLES_ADMIN,XA_RECOVER_ADMIN ON *.* TO `root`@`localhost` WITH GRANT OPTION

*************************** 3. row ***************************

Grants for root@localhost: GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION

3 rows in set (0.00 sec)

(2):查看指定用户的所有权限,使用show grants for 'user'@'ip地址段'命令:

mysql> show grants for 'compony'@'192.168.0.1' \G

*************************** 1. row ***************************

Grants for 'compony'@'192.168.0.1': GRANT USAGE ON *.* TO `compony`@`192.168.0.1`

*************************** 2. row ***************************

Grants for 'compony'@'192.168.0.1': GRANT SELECT ON `noteclass`.* TO `compony`@`192.168.0.1`

2 rows in set (0.00 sec)

上面表示compony用户在192.168.0.1网络地址登录本机MySQL后,对noteclass数据库具有select权限。

使用GRANT命令进行授权:

grant语法

grant 权限 on 数据库.数据表 to 用户名@IP地址 identified by '密码' with grant option;

//例如

grant all privileges on *.* to 'user'@'192.168.0.1' identified by '123456' with grant option;

权限包括select、update、delete、insert等,详情请参考MySQL官方网站,传送门:https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html

on:表示这些权限对哪些数据库和表生效

to:权限授予的对象

identified by:设置用户的登录密码

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

grant命令只能对已存在的用户生效,如果授权的用户不存在,则会出现如下错误:

mysql> grant all on noteclass.* to shi@'192.168.0.1' identified by '123456';

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '123456'' at line 1

使用grant命令给用户授予权限,权限会自动叠加而不是覆盖。在授权后,不要忘了执行命令更新权限表。

full privileges;

使用revoke命令收回授权

revoke命令语法跟grant命令差不多,只需把关键字to换成from即可,并且不需要设置密码。revoke可以收回所有权限,也可以收回部分权限,示例代码如下:

mysql> revoke all privileges on *.* from 'compony'@'192.168.1.0';

mysql> revoke insert,select,update,delete,drop,create,alter on huanqiu.* from 'compony'@'192.168.0.1';

mysql> flush privileges

mysql授权表一共涉及到5个表,分别是user、db、host、tables_priv和columns_priv。

这5张表的内容和用途如下:

1)user表

user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了DELETE权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。

2)db表

db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。

3)host表

host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。

4)tables_priv表

tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。

5)columns_priv表

columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。

问题解决:

在配置MySQL远程连接的过程中,可能存在Navicat无法连接的状况,造成这种状况的原因很有可能是MySQL的加密规则不一样,检索user表中的信息,如下:

mysql> select User,Host,plugin from user;

+------------------+----------------+-----------------------+

| User | Host | plugin |

+------------------+----------------+-----------------------+

| compony | 221.217.88.214 | mysql_native_password |

| mysql.infoschema | localhost | caching_sha2_password |

| mysql.session | localhost | caching_sha2_password |

| mysql.sys | localhost | caching_sha2_password |

| root | localhost | caching_sha2_password |

+------------------+----------------+-----------------------+

5 rows in set (0.00 sec)

MySQL8默认的加密方式改为了caching_sha2_password,我们需要把这个改为mysql_native_password。修改方法如下:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

或者在创建用户时直接指定加密规则:

CREATE USER 'user_name'@'192.168.0.1' IDENTIFIED WITH 'mysql_native_password' BY 'password';

也可以升级客户端修复上面的问题。

在授权时,还可能存在下面的情况,提示信息为You are not allowed to create a user with GRANT,造成该问题的的原因是授权语句中的IP地址写成了%,网上很多教程说%是通配所有的Host,但是在MySQL8中引起错误,具体原因不算太清楚,可能是新版本做了一些修改,如果有了解的可以分享一下。解决这个问题的办法就是把这个%换成用户在user表中对应的Host,更改过后使用flush privileges命令刷新一下权限即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值