无法连接到本地的mysql服务器?怎么办
具体解决法如下:1排除网络或防火墙问题先看是否能ping通远程服务器,ping1921681211,如果不可以就是网络问题。然后,检查端口是否被防火墙挡住了,telnet19216812113306,如果连接失败,配置防火墙。2配置防火墙,开启3306端口vi/etc/sysconfig/iptables-AINPUT-mstate–stateNEW-mtcp-ptcp–dport3306-jACCEPT(允许3306端口通过防火墙)/etc/initd/iptablesrestart(重启防火墙使配置生效)2检查MySQL配置3如果开启了防火墙,telnet还是失败,通过netstat查看3306的端口状态:netstat-apn|grep3360tcp600127001:3306:::LISTEN13524/mysqld注意红色的地方,这说明3306被绑定到了本地。检查一下mycnf的配置,这里可以配置绑定ip地址。
1、首先输入代码
public void SendByHttpClient(final String id, final String pw){
new Thread(new Runnable() {
@Override
public void run() {
try {
HttpClient httpclient=new DefaultHttpClient();
HttpPost httpPost=new HttpPost("http://web应用部署服务器上的IP地址:/HttpClientDemo/Login");//服务器地址,指向Servlet
List<NameValuePair> params=new ArrayList<NameValuePair>();//将id和pw装入list
paramsadd(new BasicNameValuePair("ID",id));
paramsadd(new BasicNameValuePair("PW",pw));
final UrlEncodedFormEntity entity=new UrlEncodedFormEntity(params,"utf-8");//以UTF-8格式发送
httpPostsetEntity(entity);
HttpResponse httpResponse= httpclientexecute(httpPost);
if(httpResponsegetStatusLine()getStatusCode()==200)//在200毫秒之内接收到返回值
2、然后再输入下方的代码:
{
HttpEntity entity=httpResponsegetEntity();
String response=EntityUtilstoString(entity1, "utf-8");//以UTF-8格式解析
Message message=new Message();
messagewhat=USER_LOGIN;
messageobj=response;
handlersendMessage(message);使用Message传递消息给线程
}
}
catch (Exception e) {
eprintStackTrace();
}
}
})start();
}3、最终,测试结果图,如下:
默认情况下,mysql帐号不允许从远程登陆,只能在localhost登录。如果要远程连接,可采取以下两种方法:
一、改表法:
在localhost登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,将"localhost"改称"%"
例如:
#mysql -u root -p
Enter password:
……
mysql>
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
二、授权法
例如: myuser使用mypassword(密码)从任何主机连接到mysql服务器。
mysql>GRANT ALL PRIVILEGES ON TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果想允许用户myuser从ip为19216816的主机连接到mysql服务器,并使用mypassword作为密码
mysql>GRANT ALL PRIVILEGES ON TO 'myuser'@'19216813'IDENTIFIED BY
'mypassword' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES
使修改生效即可。
排除网络或防火墙问题
先看是否能ping通远程服务器,ping 1921681211,如果不可以就是网络问题。然后,检查端口是否被防火墙挡住了,telnet 1921681211 3306,如果连接失败,配置防火墙。
配置防火墙,开启3306端口
vi /etc/sysconfig/iptables-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙)/etc/initd/iptables restart(重启防火墙使配置生效)2检查MySQL配置
如果开启了防火墙,telnet还是失败,通过netstat查看3306的端口状态:
netstat -apn|grep 3306tcp6 0 0 127001:3306 ::: LISTEN 13524/mysqld注意地方,这说明3306被绑定到了本地。检查一下mycnf的配置,这里可以配置绑定ip地址。
bind-address=addr
不配置或者IP配置为0000,表示监听所有客户端连接。
ps:我开启3306端口,并且检查MySQL配置之后,telent仍然失败,但是在本机telnet是ok的,再三确认了配置没有问题。后来跟我们的ucloud账号管理员提了一下,才知道ucloud管理后台也需要开启3306端口,用云服务器的留意这个。
3检查用户访问权限
MySQL建用户的时候会指定一个host,默认是127001/localhost,那么这个用户就只能本机访问,其它机器用这个用户帐号访问会提示没有权限,host改为%,表示允许所有机器访问。
最后,别忘了重启mysql使配置生效。
以上几个原因,你看一下是否适用你的情况
第一中方法:比较详细
以下的文章主要介绍的是MySQL 数据库开启远程连接的时机操作流程,其实开启MySQL
数据库远程连接的实际操作步骤并不难,知识方法对错而已,今天我们要向大家描述的是MySQL 数据库开启远程连接的时机操作流程。
1、d:\MySQL\bin\>MySQL -h localhost -u root
这样应该可以进入MySQL服务器
复制代码
代码如下:
MySQL>update user set host = '%' where
user = 'root';
MySQL>select host, user from user;
2、MySQL>GRANT ALL PRIVILEGES ON TO 'root'@'%' IDENTIFIED BY
'mypassword' WITH GRANT OPTION
予任何主机访问数据的权限
3、MySQL>FLUSH
PRIVILEGES
修改生效
4、MySQL>EXIT
退出MySQL服务器
这样就可以在其它任何的主机上以root身份登录啦!
以上的相关内容就是对MySQL 数据库开启远程连接的介绍,望你能有所收获。
1、 首先确保linux下mysql安装好,服务启动完之后,就可以开始连接数据库了。在终端输入“mysql -hlocalhost -uroot -p”,其中h参数是主机名,这里是本地就写localhost,也可以省略:
2、输入mysql的密码之后就登录了,也可以不输入密码登录,比如这里的root密码是mysql123456,可以直接输入“mysql -hlocalhost -uroot -pmysql123456”,此时就没有提示输入密码,直接进入mysql的命令行中了:
3、此时显示的就是mysql的命令行界面了,若要退出输入quit就可以退出了。以上就是linux中连接数据库的操作:
方法如下:
、进入mysql,创建一个新用户kay:
2、 格式:grant 权限 on 数据库名表名 用户@登录主机 identified by "用户密码";
grant select,update,insert,delete on to kay@19216818 identified by "kaypass";
3、 查看结果,执行:
use mysql;
select host,user,password from user;
可以看到在user表中已有刚才创建的kay用户。host字段表示登录的主机,其值可以用IP,也可用主机名,
将host字段的值改为%就表示在任何客户端机器上能以kay用户登录到mysql服务器,建议在开发时设为%。
update user set host = '%' where user = 'kay';
还有一个方法::
A、 /mysqladmin -uroot -p21century reload
/mysqladmin -uroot -p21century shutdown
B、/mysqld_safe --user-root &
记住:对授权表的任何修改都需要重新reload,即执行第3步。
如果经过以上3个步骤还是无法从客户端连接,请执行以下操作,在mysql数据库的db表中插入一条记录:
use mysql;
insert into db values('19216888234','%','xuys','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
update db set host = '%' where user = 'xuys';
重复执行上面的第2、3步。
0条评论