基础语法
GRANT priv_type ON database.table TO user[IDENTIFIED BY [PASSWORD] 'password'] [,user [IDENTIFIED BY [PASSWORD] 'password']...]

priv_type代表允许操作的权限。

database.table代表数据库名.表名
        注意*代表所有,如database.*代表该数据库的所有表,*.*代表所有数据库的所有表

user由用户名(User)和主机名(Host)构成,中间用@隔开,最好加上单引号,不加也可以执行通过。

password代表设置的密码

例子

授权所有数据库的所有表的所有权限给ip为任意值用户名为test密码为pwd的用户
        GRANT ALL ON *.* TO 'test'@'%' IDENTIFIED BY 'pwd';

授权mydb数据库的所有表的增删改查权限给ip为1.1.1.1用户名为test密码为pwd的用户
        GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'test'@'1.1.1.1' IDENTIFIED BY 'pwd';

授权mydb数据库的stu表的修改权限给ip为1.1.1.1用户名为test密码为pwd的用户
        GRANT UPDATE(name,age) ON mydb.stu TO 'test'@'1.1.1.1' IDENTIFIED BY 'pwd';

Mysql权限层级相关表
user表:全局层级

存储用户记录的表。关键字段有Host、User、Password。

创建对所有表有SELECT操作权限的用户
    GRANT SELECT ON *.* TO name@'1.1.1.1' IDENTIFIED BY 'pwd';

db表:数据库层级

存储该用户对一个数据库所有的操作权限。关键字段有Host、User、Db。

授予所有权限
        GRANT ALL ON mydb.* TO name@'1.1.1.1' IDENTIFIED BY 'pwd';

tables_priv表:表层级

记录了对一个表的单独授权记录.关键字段有Host、User、Db、Table_name、Table_priv、Column_priv。

当授权all在某张表的时候,Table_priv会有如下授权记录:
        Select,Insert,Update,Delete,Create,Drop,References,Index,Alter,Create View,Show view,Trigger。

单独授权表的某一列,会记录在此表的Column_priv里

GRANT UPDATE(age) ON mydb.user TO name@'1.1.1.1';

GRANT SELECT(birthday) ON mydb.user TO name@'1.1.1.1';

此时会在另一张表columns_priv表中留下单独授权记录

columns_priv表:列层级

记录对表的某一列的授权记录。关键字段Host、User、Db、Table_name、Column_name。

procs_priv表:子程序层级

可以对存储过程和存储函数进行权限设置。关键字段Host、User、proc_priv

用户相关操作
创建用户
CREATE USER方式

必须要拥有CREATE USER权限。

CREATE USER user[IDENTIFIED BY [PASSWORD] 'password'],
    [user[IDENTIFIED BY [PASSWORD] 'password']]...
        CREATE USER 'name'@'%' IDENTIFIED BY 'pwd';

INSERT方式

必须拥有mysql.user表的INSERT权限。另外,ssl_cipher、x509_issuer、x509_subject等必须要设置值

INSERT INTO mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) VALUES('%','name',PASSWORD('pwd'),'','','')

GRANT方式

需要拥有GRANT权限。

GRANT priv_type ON database.table
    TO user[IDENTIFIED BY [PASSWORD] 'password']
    [,user [IDENTIFIED BY [PASSWORD] 'password']...]
        GRANT ALL ON mydb.* TO name@'1.1.1.1' IDENTIFIED BY 'pwd';

删除用户
DROP USER方式

需要拥有DROP USER权限。

DROP USER user[,user]…
        user是需要删除的用户,由用户名(User)和主机名(Host)构成。
        DROP USER name@'1.1.1.1'

DELETE方式

DELETE FROM mydb.user WHERE Host = '% AND User = 'admin';

修改用户
修改用户名称

RENAME USER name TO newname

修改用户密码
mysqladmin方式

mysqladmin -u username -p password "new_password";

修改user表

UPDATE user SET Password = PASSWORD('pwd') WHERE USER = 'name';

SET语句方式

修改自己用户
        SET PASSWORD = PASSWORD("pwd");

修改其他用户
        SET PASSWORD FOR 'name'@'%'=PASSWORD("pwd")

GRANT方式

GRANT SELECT ON *.* TO 'name'@'%' IDENTIFIED BY 'pwd'

忘记密码

mysqld_saft方式

停止mysql:service mysqld stop;

安全模式启动:mysqld_safe –skip-grant-tables &

无密码回车键登录:`mysql -uroot –p

重置密码:use mysql; update user set password=password("") where user=’root’ and host=’localhost’; flush privileges;

正常启动:service mysql restart

再使用mysqladmin:mysqladmin password '123456';

使用普通账号来找回密码

有一个修改test库的用户:grant all on mydb.* to test@’%’ identified by ‘test’;

复制user表文件到test库下并且赋予mysql用户访问权限:

cp /home/data/mysql/data/mysql/user.* /home/data/mysql/data/test/;

chown mysql.mysql /home/data/mysql/data/test/user.*

mysql -utest -ptest登录修改root密码

将test库的user表文件覆盖 mysql库的user表文件

cp /home/data/mysql/data/mysql/user.* /tmp/;

mv /home/data/mysql/data/test/user.* /home/data/mysql/data/mysql/ ;

chown mysql.mysql /home/data/mysql/data/mysql/user.*;

查找mysql进程号,并且发送SIGHUP信号,重新加载权限表。

pgrep -n mysql;

kill -SIGHUP 11111;

无密码登录,再使用mysqladmin重新设置密码。

收回用户权限
查看权限

SHOW GRANTS;

SHOW GRANTS FOR name@'%';

SELECT * FROM mysql.user WHERE USER='name' AND HOST='%';

revoke收回权限

REVOKE priv_type[(column_list)]
    ON database.table
    FROM user[,user]
        REVOKE EXECUTE ON mydb.* FROM name@'%';

附录常见概念
PRIVILEGES分类权限
数据库/数据表/数据列权限

Alter: 修改已存在的数据表(例如增加/删除列)和索引。

Create: 建立新的数据库或数据表。

Delete: 删除表的记录。

Drop: 删除数据表或数据库。

-INDEX: 建立或删除索引。

Insert: 增加表的记录。

Select: 显示/搜索表的记录。

Update: 修改表中已存在的记录。

全局管理MySQL用户权限:

file: 在MySQL服务器上读写文件。

PROCESS: 显示或杀死属于其它用户的服务线程。

RELOAD: 重载访问控制表,刷新日志等。

SHUTDOWN: 关闭MySQL服务。

特别的权限:

ALL: 允许做任何事(和root一样)。

USAGE: 只允许登录–其它什么也不允许做。

user表中host列的值的意义

%:匹配所有主机

localhost:localhost不会被解析成IP地址,直接通过UNIXsocket连接

127.0.0.1:会通过TCP/IP协议连接,并且只能在本机访问;

::1:兼容支持ipv6的,表示同ipv4的127.0.0.1
---------------------  
作者:ToughMind_  
来源:CSDN  
原文:https://blog.csdn.net/liuquan0071/article/details/62423674  
版权声明:本文为博主原创文章,转载请附上博文链接!

mysql设置指定ip访问,用户权限相关操作的更多相关文章

  1. 【问题记录】mysql设置任意ip访问

    # 给username用户授予可以用任意IP带密码password访问数据库 GRANT ALL PRIVILEGES ON *.* TO 'username'@'%'IDENTIFIED BY 'p ...

  2. mysql设置指定ip远程访问连接的方法

    本文实例讲述了mysql设置指定ip远程访问连接的方法,分享给大家供大家参考.具体实现方法如下: 1. 授权用户root使用密码jb51从任意主机连接到mysql服务器: 复制代码 代码如下: GRA ...

  3. iptables/mysql设置指定主机访问指定端口

    本周,运维告知部署的服务被扫描发现漏洞,涉及的软件分别为mysql,ZooKeeper与Elasticsearch. 因为最近任务繁重,人力资源紧张,因此无法抽出更多时间调整代码,添加权限认证. 与软 ...

  4. mysql设置指定ip远程访问连接实例

    1. 授权用户root使用密码jb51从任意主机连接到mysql服务器: 复制代码代码如下: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED ...

  5. 阿里云设置指定ip访问实例

    添加安全组规则 添加允许访问的外网IP,优先级设置为1,并将所有ip设置为拒绝访问,优先级设置为2. 参考地址: https://help.aliyun.com/document_detail/254 ...

  6. windows防火墙安全设置指定ip访问指定端口

    场景摘要: 1.我有三台腾讯云服务器 2.我日常办公网络的ip换了 3.我在腾讯云上面改了安全规则,也不能访问我A服务器的21,1433等端口 4.开始我以为是办公网络的安全设置问题 5.我进B服务器 ...

  7. iptables 设置特定IP访问指定端口

    一.添加规则:设置禁止所有IP访问指定端口8075 [root@zabbix_server ~]# iptables -I INPUT -p tcp --dport -j DROP 二.测试telne ...

  8. 重置Mysql的root密码及用户权限设置

     一.重置Mysql的root密码 方法一: 直接进入localhost/phpmyadmin修改用户root的权限,设置密码: 方法二: 进入mysql控制台:mysql->use mysql ...

  9. 授权指定ip访问mysql 服务器

      授权指定ip访问访问 授权ROOT使用密码1234从应用服务器主机连接到mysql服务器 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'xxx. ...

随机推荐

  1. vue中使用localstorage

    1.store.js(读取写入到localstorage) const STORAGE_KEY="todos-vuejs" export default{ fetch(){ ret ...

  2. linux每日命令(34):ps命令和pstree命令

    Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...

  3. linux每日命令(37):top命令

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷新 ...

  4. Android开发(二十一)——自动更新

    参考: [1] Android应用自动更新功能的代码实现.http://www.cnblogs.com/coolszy/archive/2012/04/27/2474279.html

  5. iOS开发微信支付

    现在基本所有的App都会接入支付宝支付以及微信支付,也有很多第三方提供给你 SDK帮你接入,但是这种涉及到支付的东西还是自己服务器搞来的好一些,其实搞懂了 逻辑非常的简单,下面直接给大家说说下基本流程 ...

  6. Odoo小数精度及货币精度详解

    一.小数精度的设置 一般在设置-数据结构-精度设置中就可以对 小数类型的字段进行精度设置: 对于代码中定义为 digits=dp.get_precision('Product Price') 或 di ...

  7. Sass编译时Invalid US-ASCII character解决办法

    编译scss文件时,如果出现如下错误 Error: Invalid US-ASCII character "\xC2" on line 63 of src/assets/_scss ...

  8. 【转】 Windows下配置Git

    [转自]http://blog.csdn.net/exlsunshine/article/details/18939329 1.从git官网下载windows版本的git:http://git-scm ...

  9. Java知多少(53)使用Java创建自己的异常子类

    尽管Java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况.这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwabl ...

  10. gSOAP 在windows下的安装与使用(mingw32)

    gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服务器端和客户端.由于 gSOAP具 有相当不错的兼容性,通过gSOAP,我们就可以调用由Jav ...