admin 管理员组文章数量: 887021
2023年12月19日发(作者:数据库创建失败是怎么回事)
mysql主机服务器可远程访问账户的开启方法以及局域网内其他终端对其远程访问的多种途径
mysql -u root -p
mysql>use mysql;
mysql>select host from user where user='root';
mysql>GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '1111';
mysql>flush privileges;
mysql>select host from user where user='root';
成功会提示:Query OK, 0 rows affected (0.00 sec)
第一句是以权限用户root登录
第二句:选择mysql库
第三句:查看mysql库中的user表的host值。查看root账户下是否存在host为%的值。
如果没有继续执行以下语句
第四句:修改host值。其中 第一个*表示数据库名;第二个*表示该数据库的表名;如果像上面那样 *.*的话表示所有数据库下的所有表都允许访问;‘%’表示允许访问到mysql的ip地址;当然你也可以配置为具体到ip名称;%表示所有ip均可以访问;后面到‘1111’为root 用户的password。
第五句:刷新MySQL的系统权限相关表
第六句:再重新查看user表时,有修改。。
重起mysql服务即可完成。
以上这些是网上搜集到,搜索了“远程访问mysql方法”就有,看完以后谁知道这想表达什么?实际上这是在主机服务器上授权root账户,让该服务器可以被其他终端远程通过root账户来登陆的一种方法,为什么要做这些操作呢?因为mysql的默认设置不允许远程访问的终端使用root账户来登陆主机服务器。现在连通常的访问方法都不知道,就给我搜出授权root账户这些乱七八糟重复的一大堆。这个生活上的琐事可以问度娘,但是技术上的琐事问度娘多半会害死人。
这些资料存在的问题:1、过于陈旧,又反复被转载,如果摘下来不重新整理很难直接形成解决方案,并且有些问题在新版本出现后已解决,让不少新人走了弯路;2、专业性陈述太多,都是网上大神做的笔记,不一定是解决当事人所想的问题,写着写着出现新的问题,转而写到新问题的解决方法;3、目标不清晰,经常被检索误导,搜索不同字眼出来的却是同一套解决方案,从来不写清楚最终要达到什么样的效果,上来就说方法,导致跟着步骤走的人,走到最后发现不是自己想知道的东西。
走了不少弯路,最后自己总结了一套使用mysql远程访问和被访问的方法。最新版mysql附带的各种实用工具,通过以下步骤,最终实现使用perl dbi远程访问到mysql。
使用workbench开启主机服务器被访问的权限(在服务器主机端操作)
1、打开workbench主界面,使用默认建立的root账户登录;
2、选择users and privileges;
3、新建一个叫做forremote的账户,所有申请访问该主机服务器的电脑必须通过这个账户来登录,密码设为1111。
3.1、在login选项卡输入相关信息;
3.2、在account limit选项卡输入相关信息;
3.3、在administrative roles选项卡输入相关信息,只要选DBA就能获取所有SQL指令的操作权限;
3.4、在schema privilege选项卡输入相关信息;
将所有主机服务器里的数据访问权限全部赋予forremote这个账户。
4、选择所有操作指令,点击apply;
现在所有局域网内的电脑只要知道该主机服务器的IP地址,都可以通过这个forremote账户来访问该主机服务器。通过程序,进入命令行操作界面,输入ipconfig指令,查看该主机服务器的IP地址:
接下来使用局域网的其他终端,进行访问操作。
使用cmd访问主机服务器(在局域网内的其他终端操作)
1、打开,进入mysql sever的安装目录,本机的是C:Program FilesMySQLMySQL Server 5.6bin(如果已经设置了环境变量,这步可以忽略,但安装mysql是必须的);
2、输入mysql –h192.168.1.105 –uforremote –p回车;
mysql是启用mysql;
-h是指要访问的主机服务器名称或IP地址,填入要访问主机服务器的IP地址192.168.1.105,-h和192.168.1.105可以不用空格隔开,当然也可以隔开,后面的指令都是如此;
-u后面跟的是192.168.1.105这台主机服务器上的账户,我们通过该主机服务器上的forremote这个账户来远程登陆。有人可能会想通过服务器上的root权限去登陆,但是mysql的默认设置是不允许用root账户远程登陆到主机服务器的。下面是root登陆后的出错信息:
-p后直接回车,下一行会要求输入forremote账户的密码,输入1111后回车,即可成功登陆。
使用workbench访问主机服务器(在局域网内的其他终端操作)
1、打开workbench主界面,点击+号,添加一个快速链接;
2、在设置界面填写相关信息,点击test connection可以测试192.168.1.105这个主机服务器能否登陆成功;
输入密码1111,点击OK
出现该提示框说明能够正常连接到远端的主机服务器。
3、在设置界面点击OK,设置成功,之后可直接通过快速链接来远程登陆主机服务器;
以上的访问方法都是基于安装了mysql sever数据库应用程序来实现的,但并不是任何终端都会安装数据库管理程序,那么应用程序是通过什么方式来和主机服务器中的数据库进行通讯呢?
使用perl的DBI模块远程访问主机服务器(在局域网内其他终端操作)
前提是该终端安装了activities perl用于编译perl语言,且通过ppm下载dbi模块,以及dbi驱动模块dbd-mysql。打开文本编辑器,输入如下代码(蓝色字体为注释):
#!/usr/bin/perl -w
use strict;
use DBI;
#定义数据库名称;
#my $dbname = "test";
#my $dbhost = "127.0.0.1";#系统预留的本机地址,所有本机内部程序可以通过该地址访问数据库,相当于localhost
#my $dbhost = "localhost";#相当于从127.0.0.1访问数据库
#my $dbhost = "192.168.1.105";#通过cmd -> ipconfig查询到该终端在一个网段中的ip地址(路由器分配的ip地址),外部程序都必须通过该地址访问数据库
#my $dbsource ="dbi:mysql:dbname = $dbname:host = $dbhost";#用这个赋值方法来链接数据库,就只能访问本地,不能远程访问
#定义用户名、口令;
my $dbuser = "forremote";
my $dbpassword = "1111";
#定义DBI联接语句;
#dbi:mysql表示使用dbi模块下的mysql接口驱动;
#test表示要访问的数据库名称;
#192.168.1.105表示要远程访问的主机服务器的IP地址;
my $dbsource ="dbi:mysql:test:192.168.1.105";
# 连接;
my $dbh=DBI->connect($dbsource,$dbuser,$dbpassword) or die "can't connect!";
#%attrs = (RaiseError => 1, PrintError => 1,AutoCommit => 1);
#错误警告控制语句
# RaiseError => 1,在DBI方法里出现错误时,DBI就会发出异常消息,它会调用die()方法来显示错误信息并退出;
# PrintError => 1,在DBI方法里出现错误时,DBI就会发出异常消息,它会调用warn()方法来显示错误信息,但不退出;
if ($dbh)
{
print "mysqlconnect ok!n";#链接成功时显示
print "my $dbh->port();n";
}
else
{
print "mysqlconnect false!n";#链接失败时显示
}
$dbh=DBI->disconnect;
执行该脚本,访问成功会出现:
版权声明:本文标题:mysql开启远程访问权限和被远程访问的方法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1702992733h438778.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论