之前做网站的时候在自己电脑上搭建了PHP+Apache+MySQL服务器,今天突发奇想,想试着在实验室的其他电脑上访问我自己电脑的数据库,即通过http://我的IP/phpMyAdmin的方式。
我的电脑IP是10.103.26.216。
由于phpMyAdmin是一个网页版的数据库管理工具,所以首先要让局域网里的其他用户能够访问我的Apache服务器。在Apache的安装目录下面的conf里面找到httpd.conf,打开,找到ServerName localhost:80,改为ServerName 10.103.26.216:80。
然后重启Apache,在其他电脑上试了一下,输入http://10.103.26.216/phpMyAdmin,可以显示登陆页面,如下:
输入用户名、密码,之后却无法登录,也没有报错。我想,可能是和phpMyAdmin的配置有关,可能之前配置成了只允许从localhost登录,需要重新配置一下。
打开phpMyAdmin的文件夹,找到config.inc.php打开,找到$cfg[‘PmaAbsoluteUri’] = ‘http://localhost/phpMyAdmin/’;改为$cfg[‘PmaAbsoluteUri’] = ‘http://10.103.26.216/phpMyAdmin/’;;找到$cfg[‘Servers’][$i][‘host’] = ‘localhost’;改为$cfg[‘Servers’][$i][‘host’] = ‘10.103.26.216’;
重新登录,结果还是无法进入数据库,再修改libraries下面的config.default.php,同样修改上面两项。
再重新登录,发现报错:#1130 无法登录 MySQL 服务器,百度之,解决办法如下:
百度查询mysql的1130错误是远程连接的用户无远程权限问题导致。解决方案:在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%’。
mysql -u root -p
mysql>use mysql;
mysql>select ‘host’ from user where user=’root’;
mysql>update user set host = ‘%’ where user =’root’;
mysql>flush privileges;
mysql>select ‘host’ from user where user=’root’;
第一句是以权限用户root登录
第二句:选择mysql库
第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
第五句:刷新MySQL的系统权限相关表
第六句:再重新查看user表时,有修改。。
最后重起mysql服务即可完成。
再次登录,可以进入数据库了!
>>>>>>>>>>接着说,
我觉得如果让所有人都以root权限登录数据库的话会很危险,所以我想添加一个普通用户,假设为vosamo,本来我认为应该比较简单,一开始采取方法如下:
从phpMyAdmin以root用户登录;
添加新用户vosamo,设置好密码,权限,只设置读写删改的权限;
把主机host设置为%(表示可以从任意主机登录);
确定。
退出,从另一台电脑,以vosamo登录,结果登不上,报错:
#1045 无法登录 MySQL 服务器!
不知为何,百思不得其解。然后把该用户删除,尝试以root身份在命令行中以如下命令添加用户:
mysql>grant select,insert,update,delete on *.* to vosamo@“%” identified by “vosamo”;
这条命令表示新添加一个名为vosamo的用户并授权,on *.*表示该用户对所有数据库都有上述权限;@“%”表示可以通过任意主机访问;identified by “vosamo”表示密码为vosamo;
添加完之后,flush privilege;刷新权限。
再次以vosamo远程登录,成功!
疑问就是不知道为什么在命令行可以成功,在phpMyAdmin的界面下添加就不行~