MySQL设置远程访问

1.授予远程主机访问MySQL

在MySQL Server端,执行mysql 命令进入mysql 命令模式。使用grant命令用来建立新用户,指定用户口令并增加用户权限。命令格式如下:

grant [previleges] on [dbName].[tableName] to [userName]@[hostName] identified by "password";

flush privileges;

解释上面需要替换的变量意义: previlege:授予的权限; dbName:指定被访问的数据库名称,如果指定所有数据库可使用*星号; tableName:指定被访问的数据表,如果指定某个数据库下的所有数据表可使用*星号; userName:远程主机的登录用户名称; hostName:远程主机名或者IP地址; password:远程主机用户访问MySQL使用的密码。

示例一:

grant select on DEL_RESULT.* to dablelv@10.134.130.86 identified by "123@123";

flush privileges;

上面是一个具体授权示例。授予远程主机10.22.22.22,用户名为dablelv使用密码123@abc来访问MySQL的数据库DEL_RESULT下所有数据表,但只有select权限。

远程主机可使用如下命令来访问:

#run sql statement
function runsql(){
    dbHost="-h10.241.100.107"
    dbUserName="-udablelv"
    dbPwd="-p123@abc"
    dbName="DEL_RESULT"
    dbContext="${dbHost} ${dbUserName} ${dbPwd} ${dbName}"
    echo $* | mysql  ${dbContext};
}

runsql "select * from testtable"

注意,上面访问MySQL的脚本中的用户名称和密码,就是在MySQL服务端授权指定的用户名称和密码。需要通过-h指定MySQL服务端的主机地址。

示例二: 授予来自任意远程主机的用户dablelv对MySQL服务端的所有数据库和数据表拥有所有权限。

grant all privileges on *.* to dablelv@"%" identified by "123@abc";

flush privileges; 

2.MySQL用户的权限类型

[privileges]是一个用逗号分隔的你想要赋予的MySQL用户权限的列表。你可以指定的权限可以分为三种类型:数据库、数据表和数据列的权限。

Alter: 修改已存在的数据表(例如增加/删除列)和索引。 Create: 建立新的数据库或数据表。 Delete: 删除表的记录。 Drop: 删除数据表或数据库。 INDEX: 建立或删除索引。 Insert: 增加表的记录。 Select: 显示/搜索表的记录。 Update: 修改表中已存在的记录。

全局管理MySQL用户权限: file: 在MySQL服务器上读写文件。 PROCESS: 显示或杀死属于其它用户的服务线程。 RELOAD: 重载访问控制表,刷新日志等。 SHUTDOWN: 关闭MySQL服务。

特别的权限: ALL: 允许做任何事(和root一样)。 USAGE: 只允许登录–其它什么也不允许做。

3.查看MySQL用户的权限

查看指定用户的权限可使用如下格式命令:

show grants for [用户名]

比如查看MySQL的本地用户root拥有的权限:

show grants for root@localhost;

查询结果如下:

查看MySQL所有用户的权限,可以从mysql的用户表mysql.user中查询。查询语句如下:

select * from mysql.user \G

当然,也可以指定用户查看其权限,功能与show grants for [用户名]相同。

select * from mysql.user where user="userName";

参考文献

[1]MySQL用户权限类型 [2]查看MYSQL数据库中所有用户及拥有权限

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏醉梦轩

Ubuntu 16.04 部署MySQL服务

MySQL是一款开源的关系型数据库管理系统,大量公司都在使用它,或是在它的基础上做二次开发。有时,我们会需要在Linux系统上部署MySQL服务用于测试。

20020
来自专栏VMCloud

【腾讯云的1001种玩法】构建企业级应用环境之数据层面优化(二)

在上一篇中我们讲到准备SQL基础环境改造,这一篇将继续讲述如何为应用提供高可用的底层数据层。

62900
来自专栏数据库

SQLite 使用方法详解

提供了对 SQLite 数据库的完全支持。应用中的任何类(不包括应用外部的类)均可按名称访问您所创建的任何数据库。如果想让自己创建的数据库供外部应用使用,请使用...

24660
来自专栏西安-晁州

GridFS使用及配合nginx实现文件服务

Mongodb下GridFS使用及配合nginx实现文件服务 一、GridFS简介 GridFS是mongodb下用来存储文件的一种规范,所有官方支持的驱动均实...

82000
来自专栏Laoqi's Linux运维专列

Mysql5.7 二进制包安装(变化较大)

MySQL5.7.17版(二进制包) : 1.下载、解压二进制包 cd /usr/local/src/ wget http://mirrors.sohu.com...

31250
来自专栏酷玩时刻

Centos7.3 安装Mysql5.7并修改初始密码

http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

24940
来自专栏Java成神之路

mysql_异常_01_Access denied for user 'root'@'192.168.1.13' (using password: YES)

使用navicat premuim 连接 虚拟机mysql数据库时 ,抛出如下错误:

10630
来自专栏上善若水

013 windows10 mysql的安装

Access denied for user 'root'@'localhost' (using password:YES) 解决方案 问题的解决

15230
来自专栏一个会写诗的程序员的博客

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES/NO) 解决方案1.停止mysql

初次安装mysql,net start mysql,然后输入mysql -u root -p,

4.9K30
来自专栏python3

解决centos7 /etc/rc.local 不能执行

最近发现centos7 的/etc/rc.local不会开机执行,于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了

15720

扫码关注云+社区

领取腾讯云代金券