Navicat for MySQL远程连接报10038的错误
####################################################
""" 1、网络检测 1)ping主机可以; 2)telnet 主机3306端口不可以; telnet 主机22端口可以; 说明与本机网络没有关系;如果本地端口监听状态 telnet 127.0.0.1 3306 看看是否成功, 如果成功, 则 在远程 telnet 公网ip 3306 来判断一下是否成功, 如果成功说明没有问题, 如果失败,继续往下看 """
####################################################
""" 2、端口检测 1)netstat -ntpl |grep 3306 tcp 0 0 :::3306 :::* LISTEN - 2)netstat -ntpl |grep 22 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - 可以看出22端口监听所有地址,而3306只监听本机地址(绑定了到了本地),所以远程无法访问。 对于端口只允许本机访问,有两个地方启用,一个是防火墙启用3306,一个就是mysql配置绑定本机地址。 """
####################################################
""" 3、防火墙检测 1)iptables --list查看; 2)开启防火墙3306端口 vi /etc/sysconfig/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙) /etc/init.d/iptables restart(重启防火墙使配置生效) 3)或者直接关闭防火墙; 防火墙的操作,Ubuntu 打开3306号端口:sudo ufw allow 3306 查看端口状态:sudo ufw status # allow就是开放的。 关闭防火墙:sudo ufw disable 开启防火墙:sudo ufw enable """
###################################################
""" 4、mysql配置文件检查 检查my.cnf的配置,bind-address=addr可以配置绑定ip地址。 不配置或者IP配置为0.0.0.0,表示监听所有客户端连接。 #ps -aux | grep mysql 查看进程ID是3340 #ll /proc/3340 查看进程程序情况,找配置文件 或者#which mysql 找程序路径 执行命令 netstat -an|grep 3306?,如果3306前面是127.0.0.1,那么就要修改配置文件了 修改配置文件,网上很多就是如下图所示的修改方法, vim /etc/mysql/my.cnf vim /etc/mysql/mysql.conf.d/mysqld.cnf。发现bind-address = 127.0.0.1。 """
####################################################
""" 5、mysql用户访问权限 进入mysql数据库 $mysql -u root -p >use mysql; >select host,user from user; MySQL建用户的时候会指定一个host,默认是127.0.0.1/localhost只能本机访问; 其它机器用这个用户帐号访问会提示没有权限,host改为%,表示允许所有机器访问 登录mysql; 执行 use mysql; 执行 select user,host from mysql.user; 执行 GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘Ji10201749!‘; 执行 FLUSH PRIVILEGES; 重启mysql服务 service mysqld restart; """
mysql用户操作
""" 1.新建用户。 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234")); //刷新系统权限表 mysql>flush privileges; 这样就创建了一个名为:phplamp 密码为:1234 的用户。 然后登录一下。 mysql>exit; @>mysql -u phplamp -p @>输入密码 mysql>登录成功 2.为用户授权。 //登录MYSQL(有ROOT权限)。我里我以ROOT身份登录. @>mysql -u root -p @>密码 //首先为用户创建一个数据库(phplampDB) mysql>create database phplampDB; //授权phplamp用户拥有phplamp数据库的所有权限。 >grant all privileges on phplampDB.* to identified by ‘1234‘; //刷新系统权限表 mysql>flush privileges; mysql>其它操作 3.删除用户。 @>mysql -u root -p @>密码 mysql>DELETE FROM user WHERE User="phplamp" and Host="localhost"; mysql>flush privileges; //删除用户的数据库 mysql>drop database phplampDB; 4.修改指定用户密码。 @>mysql -u root -p @>密码 mysql>update mysql.user set password=password(‘新密码‘) where User="phplamp" and Host="localhost"; mysql>flush privileges; """
####################################################
""" mysql是否启动 这个比较简单, ps -ef | grep mysql 如果能看到对应的进程就是没有问题的 """
####################################################
""" 添加阿里云安全组规则,我也添加了, """
####################################################
linux 如何查看3306端口号是否打开 在Linux使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询 netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序) -p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。 -n : 不进行DNS轮询,显示IP(可以加速操作) -a 显示所有状态的socket 即可显示当前服务器上所有端口及进程服务,于grep结合可查看某个具体端口及服务情况·· netstat -ntlp //查看当前所有tcp端口· netstat -ntulp |grep 80 //查看所有80端口使用情况· netstat -an | grep 3306 //查看所有3306端口使用情况·
####################################################
ps –aux //查看进程号 ps –aux | more //全部查看 ps –ef | grep mysql //查看mysql的进程 kill -9 3306 //强制杀掉进程号3306
####################################################
首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。
注:本操作是在WIN命令提示符下,phpMyAdmin同样适用。
用户:phplamp 用户数据库:phplampDB
1.新建用户。
//登录MYSQL
@>mysql -u root -p
@>密码
//创建用户
mysql> insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));
//刷新系统权限表
mysql>flush privileges;
这样就创建了一个名为:phplamp 密码为:1234 的用户。
然后登录一下。
mysql>exit;
@>mysql -u phplamp -p
@>输入密码
mysql>登录成功
2.为用户授权。
//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
@>mysql -u root -p
@>密码
//首先为用户创建一个数据库(phplampDB)
mysql>create database phplampDB;
//授权phplamp用户拥有phplamp数据库的所有权限。
>grant all privileges on phplampDB.* to identified by ‘1234‘;
//刷新系统权限表
mysql>flush privileges;
mysql>其它操作
3.删除用户。
@>mysql -u root -p
@>密码
mysql>DELETE FROM user WHERE User="phplamp" and Host="localhost";
mysql>flush privileges;
//删除用户的数据库
mysql>drop database phplampDB;
4.修改指定用户密码。
@>mysql -u root -p
@>密码
mysql>update mysql.user set password=password(‘新密码‘) where User="phplamp" and Host="localhost";
mysql>flush privileges;