mysql中grant权限_mysql外网访问权限

mysql中grant权限_mysql外网访问权限mysql访问权限GRANT ALL PRIVILEGES ON,访问权限表

大家好,又见面了,我是你们的朋友全栈君。

 

 

 

 

开启远程连接:
2, 修改 Mysql-Server 用户配置
mysql> USE mysql; — 切换到 mysql DB
Database changed
mysql> SELECT User, Password, Host FROM user; — 查看现有用户,密码及允许连接的主机
+——+———-+———–+
| User | Password | Host      |
+——+———-+———–+
| root |          | localhost |
+——+———-+———–+
1 row in set (0.00 sec)
mysql> — 只有一个默认的 root 用户, 密码为空, 只允许 localhost 连接
12
mysql> — 下面我们另外添加一个新的 root 用户, 密码为空, 只允许 192.168.1.100 连接
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root’@’192.168.1.100’ IDENTIFIED BY ” WITH GRANT OPTION;
mysql> — @’192.168.1.100’可以替换为@‘%’就可任意ip访问,当然我们也可以直接用 UPDATE 更新 root 用户 Host, 但不推荐, SQL如下:
mysql> — UPDATE user SET Host=’192.168.1.100′ WHERE User=’root’ AND Host=’localhost’ LIMIT 1;
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 

 

 

如何远程访问MySQL数据库设置权限方法总结,讨论访问单个数据库,全部数据库,指定用户访问,设置访问密码,指定访问主机。
1,设置访问单个数据库权限
mysql>grant all privileges on test.* to ‘root’@’%’;
说明:设置用户名为root,密码为空,可访问数据库test

2,设置访问全部数据库权限
mysql>grant all privileges on *.* to ‘root’@’%’;
说明:设置用户名为root,密码为空,可访问所有数据库*

3,设置指定用户名访问权限
mysql>grant all privileges on *.* to ‘liuhui’@’%’;
说明:设置指定用户名为liuhui,密码为空,可访问所有数据库*

4,设置密码访问权限
mysql>grant all privileges on *.* to ‘liuhui’@’%’ IDENTIFIED BY ‘liuhui’;
说明:设置指定用户名为liuhui,密码为liuhui,可访问所有数据库*

5,设置指定可访问主机权限
mysql>grant all privileges on *.* to ‘liuhui’@’10.2.1.11’;
说明:设置指定用户名为liuhui,可访问所有数据库*,只有10.2.1.11这台机器有权限访问
还可以设置指定访问某个数据库下的某个数据表,请继续关注MySQL基础知识系列。

 

使用root账户进入mysql
create user ‘test’@’localhost’ indentified by ‘123456’;
grant all privileges on *.* to ‘test’@’localhost’ identified by ‘123456’;

grant all privileges on *.* to ‘test’@’%’ identified by ‘123456’;   #在其它任意台电脑上访问

flush privileges;

 

 

 

 

 

 

 

/* 用户和权限管理 */ ——————
用户信息表:mysql.user
— 刷新权限
flush privileges
— 增加用户
create user 用户名 identified by [password] 密码(字符串)
– 必须拥有mysql数据库的全局create user权限,或拥有insert权限。
– 只能创建用户,不能赋予权限。
– 用户名,注意引号:如 ‘user_name’@’192.168.1.1’
– 密码也需引号,纯数字密码也要加引号
– 要在纯文本中指定密码,需忽略password关键词。要把密码指定为由password()函数返回的混编值,需包含关键字password
— 重命名用户
rename user old_user to new_user
— 设置密码
set password = password(‘密码’) — 为当前用户设置密码
set password for 用户名 = password(‘密码’) — 为指定用户设置密码
— 删除用户
drop user 用户名
— 分配权限/添加用户
grant 权限列表 on 表名 to 用户名 [identified by [password] ‘password’]
– all privileges 表示所有权限
– *.* 表示所有库的所有表
– 库名.表名 表示某库下面的某表
— 查看权限
show grants for 用户名
— 查看当前用户权限
show grants; 或 show grants for current_user; 或 show grants for current_user();
— 撤消权限
revoke 权限列表 on 表名 from 用户名
revoke all privileges, grant option from 用户名 — 撤销所有权限
— 权限层级
— 要使用grant或revoke,您必须拥有grant option权限,并且您必须用于您正在授予或撤销的权限。
全局层级:全局权限适用于一个给定服务器中的所有数据库,mysql.user
grant all on *.*和 revoke all on *.*只授予和撤销全局权限。
数据库层级:数据库权限适用于一个给定数据库中的所有目标,mysql.db, mysql.host
grant all on db_name.*和revoke all on db_name.*只授予和撤销数据库权限。
表层级:表权限适用于一个给定表中的所有列,mysql.talbes_priv
grant all on db_name.tbl_name和revoke all on db_name.tbl_name只授予和撤销表权限。
列层级:列权限适用于一个给定表中的单一列,mysql.columns_priv
当使用revoke时,您必须指定与被授权列相同的列。
— 权限列表
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 — 允许授予权限

 

 

 

 

 

4.4. MySQL用户帐号管理

 

MySQL用户帐号管理主要用grant(授权)和revoke(撤权)两个SQL指令来管理。这两个指令实质是通过操作user(连接权限和全局权限)、db(数据库级权限)、tables_priv(数据表级权限)、columns_priv(数据列级权限)四个权限表来分配权限的。host权限表不受这两个指令影响。下面将会详细介绍用户权限管理的内容。

  • GRANT语法说明:

    GRANT privileges (columns)          #privileges表示授予的权限,columns表示作用的列(可选) 
          ON what                       #设置权限级别,全局级、数据库级、数据表级和数据列级
          TO account                    #权限授予的用户,用"user_name"@"host_name"这种用户名、主机名格式
          IDENTIFIED BY 'password'      #设置用户帐号密码
          REQUIRE encryption requirements       #设置经由SSL连接帐号
          WITH grant or resource management options;   #设置帐号的管理和资源(连接服务器次数或查询次数等)选项
    

    示例:

    mysql>grant all on db.* to 'test'@'localhost' identified by 'test';
    上例运行后的效果是,test用户只能通过‘test’密码从本机访问db数据库
    
    mysql>grant all on db.* to 'test'@'%' identified by 'test';
    上例运行后的效果是,test用户可通过‘test’密码从任意计算机上访问db数据库。‘%’代表任意字符,‘_’代表一个任意字符。主机名部份还可以是IP地址。
    
    [Note]  
    如果没有给定主机部份,则默认为任意主机,也就是’test’和’test’@’%’是等价的。
  • Table 4.1. 访问权限表

    权限 权限说明
    CREATE TEMPORARY TABLES 创建临时数据表
    EXECUTE 执行存储过程(暂不支持)
    FILE 操作系统文件
    GRANT OPTION 可把本帐号的权限授予其它用户
    LOCK TABLES 锁定指定数据表
    PROCESS 查看运行着的线程信息
    RELOAD 重新加载权限表或刷新日志及缓冲区
    REPLICATION CLIENT 可查询主/从服务器主机名
    REPLICATION SLAVE 运行一个镜像从服务器
    SHOW DATABASES 可运行SHOW DATABASES指令
    SHUTDOWN 关闭数据库服务器
    SUPER 可用kill终止线程以及进行超级用户操作
       
    ALTER 可修改表和索引的结构
    CREATE 创建数据库和数据表
    DELETE 删除数据表中的数据行
    DROP 删除数据表和数据行
    INDEX 建立或删除索引
    INSERT 插入数据行
    REFERENCES (暂时不支持)
    SELECT 查询数据行
    UPDATE 更新数据行
       
    ALL 所有权限,但不包括GRANT。
    USAGE 无权限权限
  • Table 4.2. 权限作用范围(由ON子句设置)

    权限限定符 作用范围
    ON *.* 全局级权限,作用于所有数据库
    ON * 全局级权限,若未指定默认数据库,其作用范围是所有数据库,否则,其作用范围是当前数据库
    ON db_name.* 数据库级权限,作用于指定数据库里的所有数据表
    ON db_name.tbl_name 数据表级权限,作用于数据表里的所有数据列
    ON tbl_name 数据表级权限,作用于默认数据库中指定的数据表里的所有数据列
  • USAGE权限的用法:修改与权限无关的帐户项,如:

    mysql>GRANT USAGE ON *.* TO account IDENTIFIED BY 'new_password';     #修改密码
    mysql>GRANT USAGE ON *.* TO account REQUIRE SSL;                      #启用SSL连接
    mysql>GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 10; #设置资源 
    
  • 拥有WITH GRANT OPTION权限的用户可把自已所拥用的权限转授给其他用户,如:

    mysql>GRANT ALL ON db.* TO 'test'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
    这样test用户就有权把该权限授予其他用户。
    
  • 限制资源使用,如:

    mysql>GRANT ALL ON db.* TO account IDENTIFIED BY 'password' WITH MAX_CONNECTIONS_PER_HOUR 10 MAX_QUERIES_PER_HOUR 200 MAX_UPDATES_PER_HOUR 50;
    允许account用户每小时最多连接20次服务器,每小时最多发出200条查询命令(其中更新命令最多为50条)
    

    默认都是零值,即没有限制。FLUSH USER_RESOURCES和FLUSH PRIVILEGES可对资源限制计数器清零。

  • REVOKE语法说明:

    mysql>REVOKE privileges (columns) ON what FROM account;
    

    示例:

    mysql>REVOKE SELECT ON db.* FROM 'test'@'localhost';
    删除test帐号从本机查询db数据库的权限
    

    REVOKE可删除权限,但不能删除帐号,即使帐号已没有任何权限。所以user数据表里还会有该帐号的记录,要彻底删除帐号,需用DELETE命令删除user数据表的记录,如:

    % mysql -u root -p
    mysql>use mysql
    mysql>DELETE FROM user where User='test' and Host='localhost';
    mysql fulsh privileges;
    

    REVOKE不能删除REQUIRE和资源占用的配置。他们是要用GRANT来删除的,如:

    GRANT USAGE ON *.* TO account REQUIRE NONE;      #删除account帐号的SSL连接选项
    GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 0 MAX_QUERIES_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;       #删除account帐号的资源限制
    
  •  

 
 
 
 
 
 
 
 
 
 
 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107193.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 解决CSDN富文本编辑器回车换行间距过大

    解决CSDN富文本编辑器回车换行间距过大在CSDN富文本编辑器中直接按回车(Enter)换行后文本间距会很大,解决方法是同时按住Shift+Enter,换行后间距就会很小!如下图所示:原理:Enter产生硬回车,它在换行的同时也起着段落分隔的作用。Shift+Enter产生软回车,它换行,但是并不换段,即前后两段文字在Word中属于同一“段”。…

  • scala 隐式转换

    scala 隐式转换文章目录作用解决什么问题使用implicits的一些规则3.1.1标记规则3.1.2范围规则3.1.3一次规则3.1.4优先规则3.1.5命名规则3.1.6编译器使用implicit的几种情况3.2隐含类型转换3.3转换被方法调用的对象3.3.1支持新的类型3.3.2模拟新的语法结构实验总结implicit基本含义隐式转换隐式转换的另一个优点是它们支持目标类型转换.隐式转换操作规则隐式参数和spring的依赖注入之前关系与区别隐式转换类(ImplicitClasses)隐式类

    2022年10月11日
  • 模拟实现银行家算法c语言

    模拟实现银行家算法c语言因为课设要做银行家算法,就写着记录一下。在网上看了很多,有java也有c。借鉴别人的,自己试着改了一下。银行家算法:第一模块:银行家算法中的数据结构为了实现银行家算法,在系统中必须设置这样四个数据结构,分别用来描述系统中可用的资源,所有进程对资源的最大需求,系统中的资源分配,以及所有的进程话需要多少资源的情况。1.可利用资源向量Available。这是一个含有m个元素的数组,其中的而每一个…

  • SWOT分析和PEST分析[通俗易懂]

    SWOT分析和PEST分析[通俗易懂]1.SWOT分析定义:SWOT(StrengthsWeaknessOpportunityThreats)分析法,又称态势分析法或优劣势分析法,用来确定企业自身的竞争优势(strength)、竞争劣势(weakness)、机会(opportunity)和威胁(threat),从而将公司的战略与公司内部资源、外部环境有机地结合起来。如何用:首先要明白使用SWOT的目的,为什么要用它,用它的目的

  • java 中stopwatch_StopWatch使用介绍「建议收藏」

    java 中stopwatch_StopWatch使用介绍「建议收藏」StopWatch是Spring核心包中的一个工具类,它是一个简单的秒表工具,可以计时指定代码段的运行时间以及汇总这个运行时间,使用它可以隐藏使用System.currentTimeMillis(),提高应用程序代码的可读性并减少计算错误的可能性。注意事项StopWatch对象不是设计为线程安全的,并且不使用同步。使用场景一般是在开发过程中验证性能,而不是作为生产应用程序的一部分方法介绍//构…

  • Android中bindService的使用及Service生命周期

    Android中bindService的使用及Service生命周期Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindService方法,本文只探讨纯bindService的使用,不涉及任何startService方法调用的情况。如果想了解startService相关的使用,请参见《Android中startService的使用及Service生命周期》。bindService启动服务

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号