10.1、MySQL错误:Can't connect to MySQL server (10060)
当远程连接MySQL数据库的时候显示Can't connect to MySQL server (10060),我们从以下几个方面入手,找出错误的原因:
1.网络不通。
检查能不能ping通。
2.防火墙设置。这个可能性也很大,优先排查这个
防火墙是否放过mysql的进程,是否屏蔽了mysql的3306端口。
方法:
防火墙开放3306端口
1、打开防火墙配置文件
vi /etc/sysconfig/iptables
2、增加下面一行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
Windows下设置防火墙
Windows2008R2系统防火墙在,控制面板里面去找
- 点击进入08防火墙设置选项卡,注意一下【高级设置】里面去设置
- 如图,在防火墙设置右上方,有【创建规则】
- 入站规则
进入规则向导页面,如图选择【端口】类型
- 本案例以开放webmail自定义端口为例,选择特定端口如8008
- 操作设置
然后在操作设置里面,选择【允许连接】
- 安全域选择
接下来就是重点了,需要允许应用到的规则域区域。建议全部选择,
- 然后是规则的名称,可以任意取名。建议加上备注,比如XX服务器XX应用
- 检查配置
设置好之后,如图点击入站规则里面查看。可以看到刚刚的配置设置
- 出站规则
出站规则设置方法是一样的,注意一下。协议类型,有TCP. UDP 你可以选择所有及 ALL类型
- 测试端口
咗嚛设置好服务器防火墙端口开放之后,再内网的还需要在路由器上设置映射。左左可以通过站长工具在线测试,如图
3、重启防火墙
1
service iptables restart
3.mysql的账户设置。
mysql账户是否不允许远程连接。如果无法连接可以尝试以下方法:
mysql -u root -p //登录MySQL
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; //任何远程主机都可以访问数据库
mysql> FLUSH PRIVILEGES; //需要输入次命令使修改生效
mysql> EXIT //退出
也可以通过修改表来实现远程:
mysql -u root -p
mysql> use mysql;
mysql> update user set host = '%' where user = 'root';
mysql> select host, user from user;
其实错误的原因也不外乎以上几个方面,相信按照上面的思路找出原因,定能将问题解决掉
10.2、命令行远程连接mysql数据库
mysql -h 172.17.195.37 -P 3306 -u root -p123456
mysql> show databases;
10.3、linux mysql数据库远程无法访问
1.网络或防火墙问题
(1)检查网络直接ping你的远程服务器,ping 182.61.22.107,可以ping通说明网络没问题
(2)看端口号3306是不是被防火墙挡住了,telnet 182.61.22.107 3306
下图这样就是防火墙挡住了3306端口不允许访问
配置防火墙,开启3306端口
vi /etc/sysconfig/iptables //防火墙配置
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT //允许3306端口通过
service iptables restart //重启防火墙
配置如下(切记放在prohibited前面):
2.MySQL配置
授权给root@所有ip在使用密码admin1234的用户能访问数据库
mysql -u root -p //登录数据库
use mysql //进入mysql数据库
select Host,User from user; //查看可以访问数据库的ip
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "admin1234";
FLUSH PRIVILEGES;
EXIT;
10.4 mysql导出数据库脚本及数据
选中数据库,右键转储SQL文件
10.5 mysql启动与停止
查看状态
service mysqld status
service mysqld stop
service mysqld start
service mysqld restart
10.6 mysql服务不可用
[root@master logs]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
先删除sock,再重启
rm /var/lib/mysql/mysql.sock
service mysqld restart
10.7 Host 'XXX' is not allowed to connect to this MySQL server解决方案
root账号登录
/software/mysql/bin/mysql -u root –p
newDb@sh
授权
grant all PRIVILEGES on newDb.* to root@'172.17.0.7' identified by 'newDb@sh';
grant all PRIVILEGES on newDb.* to root@'150.158.124.198' identified by 'newDb@sh';
150.158.124.198 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。
grant all PRIVILEGES on newDb.* to root@'%' identified by 'newDb@sh';
写入权限生效
flush privileges;
10.8 CLIENT_PLUGIN_AUTH is required
更换一下驱动
<!-- jdbc连接-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://131.252.95.109:3306/tariff_letter?serverTimezone=UTC&zeroDateTimeBehavior=round&nullCatalogMeansCurrent=true" userId="approot"
password="admin1234"/>
原先是com.mysql.cj.jdbc.Driver 适合高版本
10.9 mysql命令行连接及设置最大连接数
./mysql -u approot –p
检查当前最大连接数
SHOW GLOBAL VARIABLES WHERE Variable_name='max_connections' ;
10.10 dbvisualizer中文乱码问题解决
1.SQL Commander里中文显示成‘口’
解:进入Tools -> Tool Properties -> General -> Appearence -> Fonts,把最上边的三个字体都改成宋体或其他可正常显示中文的字体,改完apply,重新启动Dbvisualizer就好了。
2.表数据中中文显示成问号
解:先断开连接,然后在创建连接时的Database一栏的数据库名后面加上“?generateSimpleParameterMetadata=true&useUnicode=true&characterEncoding=utf8”,然后再连接应该就可以了。
注意:这种方法不会自动把问号变成中文,要手动把问号改成中文,存量问号太多的话,就需要重新导入数据了。
如果新增数据中文还是显示成问号的话,试试把所有的编码都改成UTF8,如下:
①进入Tools -> Tool Properties -> File Encoding,把编码改成UTF-8
②在填写连接IP端口的界面点进下一个Properties标签页,左边菜单中有个Encoding,点进去之后改成UTF-8
③修改数据库字符集编码,如MYSQL数据库的话就运行如下语句:
set character_set_server=utf8;
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_results=utf8;
10.11“Another MySQL daemon already running with the same unix socket”的处理和思考
rm var/lib/mysql/mysql.sock
service mysqld start
但是也有可能是空间不足造成的df查看系统空间