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地址。

如果没有给定主机部份,则默认为任意主机,也就是'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帐号的资源限制
mysql访问权限GRANT ALL PRIVILEGES ON,访问权限表的更多相关文章
- mysql 赋给用户远程权限 grant all privileges on
我配置了权限 就可以在Windows下访问我虚拟机中的数据库了 来源:http://blog.csdn.net/louisliaoxh/article/details/52767209 登录: 在本机 ...
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist ,mysql 赋给用户权限 grant all privileges on
mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法 遇到了 SQLException: acce ...
- mysql 赋给用户权限 grant all privileges on
遇到了 SQLException: access denied for @'localhost' (using password: no) 解决办法 grant all privileges o ...
- mysql赋给用户权限grant all privileges on
查看mysql用户表的结构,Field项都是各类权限限制 Host限制登录的IP,User限制登录的用户,Delete_priv限制删除权限,Grant_priv限制权限授予,Super_priv为超 ...
- mysql操作命令梳理-grant授权和revoke回收权限
在mysql维护工作中,做好权限管理是一个很重要的环节.下面对mysql权限操作进行梳理: mysql的权限命令是grant,权限撤销的命令时revoke:grant授权格式:grant 权限列表 o ...
- GRANT ALL PRIVILEGES 限制某个或所有客户端都可以连接至mysql
GRANT ALL PRIVILEGES 1. 改表法.可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mys ...
- Mysql给某一台主机授权访问,修改root密码
ubuntu上用的是phpstudy,安装好之后,敲mysql,提示没有,需要安装mysql的客户端. 安装好之后直接敲mysql,敲 mysql 再敲use mysql 再敲mysql -uroot ...
- mysql GRANT ALL PRIVILEGES 限制某个或所有客户端都可以连接至mysql
GRANT ALL PRIVILEGES 1. 改表法.可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mys ...
- 【转载】MySQL数据库可以用任意ip连接访问的方法
通过CMD命令行修改数据库表的一个字段的值,实现连接,访问. 第一步.找到MYSQL软件安装所在的bin目录: (1)cd\当前目录 (2)指定MYSQL安装的bin目录 (3)输入 -h local ...
随机推荐
- Web前端开发最佳实践系列文章汇总
Web前端开发最佳实践(1):前端开发概述 Web前端开发最佳实践(2):前端代码重构 Web前端开发最佳实践(3):前端代码和资源的压缩与合并 Web前端开发最佳实践(4):在页面中添加必要的met ...
- Haproxy 开启日志记录
CentOS 7上yum安装的Haproxy,默认没有记录日志.需要做一下配置才能记录日志.(不知道其他版本是否需要,已经忘记了)主要是用到了Haproxy,以前貌似没有这么麻烦,今天配置出了一些问题 ...
- Django实战(7):改造ProductList界面
有了上一节关于Django模板的基础,改造界面就很容易理解了.将界面设计师设计的页面中的内容根据复用程度分别放到基础模板base.html和专用模板productlist.html中. depot/t ...
- LogStash plugins-inputs-file介绍(三)
官方文档 https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html 重要参数: path # 文件路径 sin ...
- linux如何连接移动硬盘
下载第三方插件的地方: http://www.tuxera.com/community/open-source-ntfs-3g/ 这是具体教程: http://hellopyl.blog.51cto. ...
- python入门4(冒泡排序)
在学习了最基本的python语法后,我们来实践一个最简单的冒泡排序,检验一下自己是否入门. def bubble_sort(lists): # 冒泡排序 count = len(lists) for ...
- Laravel数据库配置问题
由于项目需要,使用Laravel连接远程数据库进行开发 将默认的数据库配置信息改为远程数据库信息 在模型文件中定义了 protected $connection = 'default' 运行程序,报错 ...
- Linux-CentOs7-svn安装及钩子配置
做个svn的教程 首先进入test目录下,新建一个svn目录,准备做svn测试cd /testmkdir svncd svn然后使用yum安装svn,这里就不使用编译安装了,这玩意只要能用就行,版本无 ...
- Android ListView 自动加载更多
Android ListView下拉刷新 ListView是我们经常用来展示数据的一个控件,但是由于我们手机的性能和流量的问题,往往我们从服务器中取数据,不能一次性将数据取出来,比如一个新闻的手机AP ...
- C# 序列化简单格式XML
问师傅反序列化和序列化到底是什么, 然后师傅鄙视一下我的智商,让我做个反序列化解析XML. 一边听着师傅在旁边跟女朋友打电话收到暴击伤害,一边写,搞了一个半小时. XML文件: <?xml ve ...