远程连接linux下的mysql Err1045 Err2003解决办法

来源:互联网 发布:通联支付 网络万元 编辑:程序博客网 时间:2024/05/20 13:40
linux系统 Centos7

一、.Err2003

我个人的情况是因为linux中防火墙开启并阻止了3306这个mysql端口的远程连接

解决办法:

CentOS 7.0默认使用的是firewall作为防火墙,现在要将其关闭

1.命令

   [caibo@localhost /]$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
   success
  [caibo@localhost /]$ firewall-cmd --reload

2.配置文件

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

如果你还想开启别的防火墙请记得配置相关文件不要屏蔽远程连接3306端口

下面给出一个网上找出的例子,配置iptables防火墙(我并没有自己实践)

vi/etc/sysconfig/iptables #编辑防火墙配置文件
# sampleconfiguration for iptables service
# you can edit thismanually or use system-config-firewall
# please do not askus to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT[0:0]
:OUTPUT ACCEPT[0:0]
-A INPUT -m state--state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -jACCEPT
-A INPUT -i lo -jACCEPT
-A INPUT -p tcp -mstate --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -jACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080-j ACCEPT
-A INPUT -j REJECT--reject-with icmp-host-prohibited
-A FORWARD -jREJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出

备注:这里使用80和8080端口为例。***部分一般添加到“-A INPUT -p tcp -m state --state NEW -m tcp--dport 22 -j ACCEPT”行的上面或者下面,切记不要添加到最后一行,否则防火墙重启后不生效。
systemctlrestart iptables.service #最后重启防火墙使配置生效
systemctlenable iptables.service #设置防火墙开机启动

 

二、Err1045

我之前用了mysql的root账户远程linux下的mysql可能是导致这个问题的原因

于是我新建了一个账户并给这个账户分配了一个数据库然后远程,成功连接


处理方法有二个

1、(如何解决客户端与服务器端的连接(mysql) :xxx.xxx.xxx.xxx is not allowed to connect to thisMySQL serv 
) 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

 代码如下复制代码GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@'%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

 代码如下复制代码GRANT ALL PRIVILEGES ON *.* TO ‘root’@’192.168.1.3′ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO ‘root’@’10.10.40.54′ IDENTIFIED BY ’123456′ WITH GRANT OPTION;

三、Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;

用root帐号登录后,在/etc/my.cnf中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;

lower_case_table_names参数详解:
lower_case_table_names=0
其中0:区分大小写,1:不区分大小写

MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的;
MySQL在Windows下都不区分大小写

0 0