是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]
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)