mysql连接时用的IP地址是不是电脑本机上的IP地址呢!

mysql连接时用的IP地址是不是电脑本机上的IP地址呢!,第1张

是root用户的话,IP就是<localhost>或<127.0.0.1>,只是代表使用本机,不是代表本机IP地址, *** 作方法如下:

1、首先,利用Navicat创建一个数据库和表,数据库名为testdb,表为userinfo,并添加一条新记录。

2、用如下的数据库连接字符串访问数据库时,是没有问题的。Driver = MySQL ODBC 5.1 DriverServer = localhostPort=3306DATABASE = testdbuser = rootpassword = 123456。

3、其中,Server是数据库所在主机IP地址,Prot是连接端口;user和password则为连接数据库的用户名和密码,使用Select * from userinfo 可以正确获取到数据。

4、但是当把localhost换成实际的IP地址的时候,就报错了,说明这个数据库testdb是默认没开启访问权限的,默认情况下只允许localhost和127.0.0.1访问。

5、更新root账户的权限。打开mysql命令行窗口,输入grant all privileges on *.* to root@"%" identified by 'abc' with grant option  flush privileges。

6、创建一个新账户,如guest,并将可被访问的主机定义为%,即所有主机都可访问该账户。测试,没有问题。

一、允许root用户在任何地方进行远程登录,并具有所有库任何 *** 作权限,

具体 *** 作如下:

在本机先使用root用户登录mysql: mysql -u root -p"youpassword" 进行授权 *** 作:

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION

重载授权表:

FLUSH PRIVILEGES

退出mysql数据库:

exit

二、允许root用户在一个特定的IP进行远程登录,并具有所有库任何 *** 作权限,具体 *** 作如下: 在本机先使用root用户登录mysql:

mysql -u root -p"youpassword" 进行授权 *** 作: GRANT ALL PRIVILEGES ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword" WITH GRANT OPTION重载授权表: FLUSH PRIVILEGES退出mysql数据库: exit

三、允许root用户在一个特定的IP进行远程登录,并具有所有库特定 *** 作权限,具体 *** 作如下: 在本机先使用root用户登录mysql:

mysql -u root -p"youpassword" 进行授权 *** 作: GRANT select,insert,update,delete

ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword"重载授权表: FLUSH PRIVILEGES退出mysql数据库: exit

四、删除用户授权,需要使用REVOKE命令,具体命令格式为: REVOKE privileges ON 数据库[.表名] FROM

user-name具体实例,先在本机登录mysql: mysql -u root -p"youpassword" 进行授权 *** 作: GRANT

select,insert,update,delete ON TEST-DB TO test-user@"172.16.16.152"

IDENTIFIED BY "youpassword"再进行删除授权 *** 作: REVOKE all on TEST-DB from

test-user****注:该 *** 作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。

最后从用户表内清除用户: DELETE FROM user WHERE user="test-user"重载授权表: FLUSH

PRIVILEGES退出mysql数据库: exit

五、MYSQL权限详细分类: 全局管理权限: FILE: 在MySQL服务器上读写文件。 PROCESS:

显示或杀死属于其它用户的服务线程。 RELOAD: 重载访问控制表,刷新日志等。 SHUTDOWN: 关闭MySQL服务。

数据库/数据表/数据列权限: ALTER: 修改已存在的数据表(例如增加/删除列)和索引。 CREATE: 建立新的数据库或数据表。

DELETE: 删除表的记录。 DROP: 删除数据表或数据库。 INDEX: 建立或删除索引。 INSERT: 增加表的记录。 SELECT:

显示/搜索表的记录。 UPDATE: 修改表中已存在的记录。 特别的权限: ALL: 允许做任何事(和root一样)。 USAGE:

只允许登录--其它什么也不允许做。

大家一般都是用$_SERVER['REMOTE_ADDR']来获取用户IP,

但是如果使用了反向代理的,HTTP头中REMOTE_ADDR就不是用户的地址,反而是上一级代理的地址了。

经过我的研究有两种方法来获取用户的真实外网IP。

方法一:curl

复制代码代码如下:

function get_onlineip() {

$ch = curl_init('http://www.ip138.com/ip2city.asp')

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true)

$a = curl_exec($ch)

preg_match('/\[(.*)\]/', $a, $ip)

return $ip[1]

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8614677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存