mysql如何查看远程用户_MySQL系列(十)--用户权限及远程访问

本文基于MySQL8.0,记录一下完整的远程访问的过程,以及这个过程中可能遇到的问题,MySQL运行在阿里云服务器,操作系统:CentOS 7.6 64位

顺便说下,买服务器还是要双十二这种拉新活动再买,用一个新的支付宝账号购买,能便宜一大半,不然双核4G就两千多块了。

这里默认防火墙已经向外暴露3306端口/关闭防火墙了,以及阿里云安全组配置暴露3306端口,在Windows通过Navicat测试连接

随便创建一个用户:

mysql> create user 'dev'@'localhost' identified by 'huluhulu';  //创建用户dev,只能在localhost使用,密码huluhulu

Query OK,0 rows affected (0.00sec)

mysql> select host, user ,authentication_string, plugin from user;  //查看user,host,加密后的字符串,以及加密类型+-----------+------------------+------------------------------------------------------------------------+-----------------------+

| host | user | authentication_string | plugin |

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

| % | root | *43C685FF9E03403DD721CF54B4E40B199DA06624 | mysql_native_password |

| % | test | *43C685FF9E03403DD721CF54B4E40B199DA06624 | mysql_native_password |

| localhost | dev | $A$005$6dH-H a.'^JNmbBkSYomGJK2180WHglWpm4mw.BIJGtuPX0qcBrOLIcMqC | caching_sha2_password |

| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |

| localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |

| localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |

| localhost | root | *43C685FF9E03403DD721CF54B4E40B199DA06624 | mysql_native_password |

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

7 rows in set (0.00 sec)

创建用户之后,默认加密类型为caching_sha2_password

Navicat登录结果:

762fa0aad9192b09a3908359eebe74a4.png

修改用户加密方式:

mysql> alter user 'dev'@'localhost'identified with mysql_native_password by 'huluhulu';

Query OK,0 rows affected (0.00sec)

mysql> select host, user ,authentication_string, plugin from user;+-----------+------------------+------------------------------------------------------------------------+-----------------------+

| host | user | authentication_string | plugin |

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

| % | root | *43C685FF9E03403DD721CF54B4E40B199DA06624 | mysql_native_password |

| % | test | *43C685FF9E03403DD721CF54B4E40B199DA06624 | mysql_native_password |

| localhost | dev | *43C685FF9E03403DD721CF54B4E40B199DA06624 | mysql_native_password |

| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |

| localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |

| localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |

| localhost | root | *43C685FF9E03403DD721CF54B4E40B199DA06624 | mysql_native_password |

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

7 rows in set (0.00 sec)

因为可视化工具只支持旧的加密方式mysql_native_password,如果是caching_sha2_password是无法远程连接登录的

Navicat登录结果:

c3ce21cf3146931842cb0d896ac348de.png

因为dev用户支持的是localhost登录,我们需要把他修改为远程访问机器的IP或者%,%代表任意地址

修改用户登录授权地址:

mysql> rename user 'dev'@'localhost' to 'dev'@'%';

Query OK,0 rows affected (0.00 sec)

Navicat登录结果:

d08d8f03e539d278b5924d6be8ae6aa8.png

到这里我们实现访问登录,但是登录dev用户,我们发现只有一个数据库

2968d2b4742f7d175095d93dff61f0da.png

查看dev用户权限:

mysql> show grants for 'dev'@'%';+---------------------------------+

| Grants for dev@% |

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

| GRANT USAGE ON *.* TO `dev`@`%` |

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

1 row in set (0.00 sec)

dev用户的权限为USAGE,MySQL用户权限介绍如下:

--权限列表

ALL [PRIVILEGES] --设置除GRANT OPTION之外的所有简单权限

ALTER --允许使用ALTER TABLE

ALTER ROUTINE --更改或取消已存储的子程序

CREATE --允许使用CREATE TABLE

CREATE ROUTINE --创建已存储的子程序

CREATE TEMPORARY TABLES --允许使用CREATE TEMPORARY TABLE

CREATE USER --允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。

CREATE VIEW --允许使用CREATE VIEW

DELETE --允许使用DELETE

DROP --允许使用DROP TABLE

EXECUTE --允许用户运行已存储的子程序

FILE --允许使用SELECT...INTO OUTFILE和LOAD DATA INFILE

INDEX --允许使用CREATE INDEX和DROP INDEX

INSERT --允许使用INSERT

LOCK TABLES --允许对您拥有SELECT权限的表使用LOCK TABLES

PROCESS --允许使用SHOW FULL PROCESSLIST

REFERENCES --未被实施

RELOAD --允许使用FLUSH

REPLICATION CLIENT --允许用户询问从属服务器或主服务器的地址

REPLICATION SLAVE --用于复制型从属服务器(从主服务器中读取二进制日志事件)

SELECT --允许使用SELECT

SHOW DATABASES --显示所有数据库

SHOW VIEW --允许使用SHOW CREATE VIEW

SHUTDOWN --允许使用mysqladmin shutdown

SUPER --允许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections。

UPDATE --允许使用UPDATE

USAGE --“无权限”的同义词

GRANT OPTION --允许授予权限

USAGE就是无权限,我们现在给dev用户添加select权限,但是只针对数据库mysql的test表,查看权限

mysql> grant select on mysql.test to 'dev'@'%' with grant option;

Query OK,0 rows affected (0.01sec)

mysql> show grants for 'dev'@'%';+---------------------------------------------------------------+

| Grants for dev@% |

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

| GRANT USAGE ON *.* TO `dev`@`%` |

| GRANT SELECT ON `mysql`.`test` TO `dev`@`%` WITH GRANT OPTION |

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

2 rows in set (0.00 sec)

Navicat登录结果:只显示一张表

34982ac5496fa0c6fd236eb585831678.png

修改用户加密方式:执行select语句是可以的,

SELECT * FROM test;

但是如果执行delete,或者其他DML以及DDL语句,是没有权限的

[SQL]DELETE FROM test WHERE Id=100;[Err] 1142 - DELETE command denied to user 'dev'@'202.101.0.2' for table 'test'

后序为了测试方便,把权限赋予所有的数据库的所有表,以及添加update,select权限

mysql> grant select,update, delete on *.* to 'dev'@'%' with grant option;

Query OK,0 rows affected (0.00sec)

mysql> show grants for 'dev'@'%';+--------------------------------------------------------------------+

| Grants for dev@% |

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

| GRANT SELECT, insert, UPDATE, DELETE ON *.* TO `dev`@`%` WITH GRANT OPTION |

| GRANT SELECT ON `mysql`.`test` TO `dev`@`%` WITH GRANT OPTION |

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

2 rows in set (0.00 sec)

撤销dev用户delete权限:

mysql> revoke delete on *.* from 'dev'@'%';

Query OK,0 rows affected (0.01sec)

mysql> show grants for 'dev'@'%';+---------------------------------------------------------------------------+

| Grants for dev@% |

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

| GRANT SELECT, INSERT, UPDATE, ALTER ON *.* TO `dev`@`%` WITH GRANT OPTION |

| GRANT SELECT ON `mysql`.`test` TO `dev`@`%` WITH GRANT OPTION |

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

2 rows in set (0.00 sec)

撤销dev用户所有权限:

mysql> revoke all privileges on *.* from 'dev'@'%';

Query OK,0 rows affected (0.01sec)

mysql> flush privileges;

Query OK,0 rows affected (0.00 sec)

PS:flush privileges命令只刷新你MySQL所在机器的权限,如果远程访问,你需要在远程操作所在的机器使用flush privileges进行

刷新权限,或者断开连接,并重新连接也会刷新

到此为止,关于一般用户权限控制的操作讲完了,包括远程访问可能遇到的问题,算是一个入门吧,希望对新手有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring mvc拆分_Spring集成–强大的拆分器聚合器

spring mvc拆分健壮是什么意思? 在本文的上下文中,健壮性是指在不立即返回给调用者的情况下管理流中的异常条件的能力。 在某些处理方案中, n个 m个回答足以做出结论。 通常具有这些趋势的示例处理场景是: 财务,保…

JasperReports:棘手的部分

如果您使用Java进行编程的时间足够长,则有可能需要为业务用户生成报告。 就我而言,我已经看到几个项目使用JasperReports库来生成PDF和其他文件格式的报告。 最近,我荣幸地观察了Mike和他的团队使用上述报告库及其面临的挑战。 简而言之Jasp…

win mysql 2003错误_windows MySql 报1067错误 2003错误

1067错误原因是我把安装mysql的目录的名字改了。但是位于目录里面的my.ini配置文件没有修改,玛德我真傻逼。把my.ini的#Path to installation directory. All paths are usually resolved relative to this.basedir"D:/My_MySQL/"这下面一行的路径名改成目…

分布式系统开发注意点_分布式系统开发注意事项

分布式系统开发注意点开发分布式软件系统时,要考虑许多因素。 如果您甚至不知道第一句话中我在说什么,那么让我为您提供一些见解,示例以及有关分布式系统的实例。 总览 分布式系统是指多个物理硬件设备与单独的离散用户交互并通过这些硬件设…

电子电气架构——车载ECU刷写工具vFlash简介

电子电气架构——车载ECU刷写工具vFlash简介 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值&a…

ldap java_使用LDAP保护Java EE6中的Web应用程序

ldap java在上一篇文章中,我们解释了如何在通过传输层安全性(TLS)/安全套接字层(SSL)传输数据时保护数据。 现在让我们尝试了解如何为使用LDAP服务器进行身份验证的基于JEE 6的Web应用程序应用安全机制。 目的&#x…

mysql 一致性hash_一致性hash算法在分表分库中的应用

一致性hash算法结构图 分表分库结构图 可进行循环冗余存储,顺时针存储到下一个物理节点(非虚拟节点)package com.haiziwang.platform.kmcsms.route.algorithm;import java.util.Collection;import java.util.SortedMap;import java.util.TreeMap;/*** 一致性Hash算法…

生产中的性能分析

生产中的性能分析 如果您在Java应用程序的性能方面遇到了一些严重问题,那么很可能您会知道线程分析的价值。 但是您知道应该使用哪个分析器吗? 探查器使用两种基本技术-采样和仪器。 采样分析器 采样探查器包括定期向JVM询问所有当前活动线程的当前执行…

mysql用com_MySQL 使用教程

关于 MySQLMySQL 是最流行的开源数据库。本文简明的讲解了 MySQL 如何下载安装到使用的整个过程。MySQL 支持多种特性:使用 C和 C编写,并使用了多种编译器进行测试,保证了源代码的可移植性。支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell…

c++ 一维数组长度_每天一点C / 一维数组和指针

哈喽,我是老吴,继续记录我的学习心得。每天一点系列是我对微习惯的践行。现在能做到每天一点 C,将来就会有更多的每天一点系列,没人规定嵌入式软件工程师就只能学习 C 语言和折腾 Linux,不要给自己设限。为什么是每天一…

mysql事务中怎么更改空值_MySQL事务

1.事务1.事务特性--ACIDAtomicity(原子性):要么全做,要么不做,不能只做一半(银行转账)Consistency(约束性):事务的前后,约束都能满足Isolation(依赖性):事务之间是独立的,互不影响的Durability(持久性):事务执行之后,事物的结果可以持久保存2.事务隔离级别:read uncommitted:可…

线程池实现填充短信_填充一个池需要多少个线程?

线程池实现填充短信在最近几个月中,我们一直看到很小但持续的操作失败,但有一个奇怪的异常– org.springframework.jdbc.CannotGetJdbcConnectionException –“无法获得JDBC连接; 嵌套异常是java.sql.SQLException:客户端尝试检出…

jsf标签_多个动态包含一个JSF标签

jsf标签每个JSF开发人员都知道ui&#xff1a;include和ui&#xff1a;param标签。 您可以包括一个facelet&#xff08;XHTML文件&#xff09;并传递一个对象&#xff0c;该对象将在包含的facelet中可用&#xff0c;如下所示&#xff1a; <ui:include src"/sections/co…

spring 长轮询_Spring集成文件轮询和测试

spring 长轮询我最近实施了一个小项目&#xff0c;在该项目中&#xff0c;我们必须轮询文件夹中的新文件&#xff0c;然后在文件内容上触发服务流。 Spring Integration非常适合此要求&#xff0c;因为它带有一个通道适配器 &#xff0c;该适配器可以扫描文件夹中的新文件&…

您将在下一个项目中使用JSF吗?

上周有一篇很棒的stackoverflow博客文章&#xff0c;主题是“ JavaScript框架的残酷生命周期” 。 这篇文章是关于Javascript UI框架&#xff08;angularjs&#xff0c;angular&#xff0c;jquery和react&#xff09;的流行和流行的速度。 这篇文章的关键指标是每月关于框架的问…

使用java自带的日志管理_java日志管理

1.相关概念日志统一框架(日志门面)&#xff1a;apache commons logging、slf4j日志实现框架(实现层)&#xff1a;JDK自带的logging(java.util.logging)、log4j、Java Util Logging、log4j2、logback.(1)JDK自带的logging(java.util.logging)用法&#xff1a;1 importjava.util.…

安卓4.4玩java_Android4.4运行过程中闪退java.lang.NoClassDefFoundError

上周五项目测试时发现一个奇怪的Bug&#xff0c;项目中依赖了一个第三方框架&#xff0c;但是在android4.0-4.4.4之间的系统中运行会直接闪退&#xff0c;抛出错误异常为java.lang.NoClassDefFoundError。第一次遇到这样的问题&#xff0c;google了好久找到了以下几个原因&…

update se_Java SE 7 Update 25 –发行说明进行了解释。

update se昨天是CPU日。 Oracle通过6月的Java重要补丁更新发布了Java SE更新25 。 在4月的最后一次重大更新之后&#xff0c;这是最后一次与Oracle其他所有Oracle产品都不适合的Oracle重要补丁更新计划。 从2013年10月开始 &#xff0c;Java安全修补程序将遵循四个年度安全发布…

java scavenge_请概述一下Java中都有哪些垃圾收集器

1、Serial(串行GC)收集器Serial收集器是一个新生代收集器&#xff0c;单线程执行&#xff0c;使用复制算法。它在进行垃圾收集时&#xff0c;必须暂停其他所有的工作线程(用户线程)。是Jvmclient模式下默认的新生代收集器。对于限定单个CPU的环境来说&#xff0c;Serial收集器由…

阿帕奇光束

Apache Beam是一个开放源代码统一模型&#xff0c;用于定义批处理和流数据并行处理管道。 使用一种开源的Beam SDK&#xff0c;您可以构建一个定义管道的程序。 然后&#xff0c;该管道由Beam支持的分布式处理后端之一执行&#xff0c;这些后端包括Apache Apex &#xff0c; Ap…