• 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 phplamp@localhost 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;
    """
    View Code

    ####################################################

    """
    
    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 phplamp@localhost 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;

  • 相关阅读:
    魔理沙的烟火制造
    【数位DP】恨7不成妻
    Happy Equation
    实验4
    Max answer(The Preliminary Contest for ICPC China Nanchang National Invitational)
    Next K Permutation
    Hubtown(最大流)
    Compass Card Sales(模拟)
    Ghostbusters(并查集,最小生成树)
    游览器兼容性笔记
  • 原文地址:https://www.cnblogs.com/andy0816/p/12342517.html
Copyright © 2020-2023  润新知