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,并将可被访问的主机定义为%,即所有主机都可访问该账户。测试,没有问题。

设置mysql服务允许外网访问,修改mysql的配置文件,有的是my.ini,有的是my.cnf【linux】.

1:设置mysql的配置文件

/etc/mysql/my.cnf

找到 bind-address =127.0.0.1 将其注释掉;//作用是使得不再只允许本地访问;

重启mysql:/etc/init.d/mysql restart

2:登录mysql数据库:mysql -u root -p

mysql>use mysql

查询host值:

mysql>select user,host from user

如果没有"%"这个host值,就执行下面这两句:

mysql>update user set host='%' where user='root'

mysql>flush privileges

或者也可以执行:

mysql>grand all privileges on *.* to root@'%' identifies by ' xxxx'

其中 第一个*表示数据库名;第二个*表示该数据库的表名;如果像上面那样 *.*的话表示所有到数据库下到所有表都允许访问;

‘%':表示允许访问到mysql的ip地址;当然你也可以配置为具体到ip名称;%表示所有ip均可以访问;

后面到‘xxxx'为root 用户的password;

举例:

任意主机以用户root和密码mypwd连接到mysql服务器

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

mysql>flush privileges

IP为192.168.1.102的主机以用户myuser和密码mypwd连接到mysql服务器

mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.102' IDENTIFIED BY 'mypwd' WITH GRANT OPTION

mysql>flush privileges


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存