• 今天解决了一个mysql远程登录和本机ip登录都失败的问题


    前段时间按网上教程在windows系统虚拟机上装了一个mysql,但是安装成功后,发现只能在虚拟机上登录,无法通过远程登录。

    而且在本机,也只能不指定-h时才可以登录,如果用mysql -u root -h 127.0.0.1,也会登录失败。

    报错信息:ERROR 1130 (HY000): Host '127.0.0.1' is not allowed to connect to this MySQL server

    127.0.0.1登录失败的原因,我查了一下网上资料,知道可能是由于mysql里面没有root@127.0.0.1的用户数据,只有root@localhost的用户数据,所以登录失败。

    但即使我给系统加上了root@%的用户,并且赋了登录权限,还是登录不成功。

    继续按网上的资料,确认防火墙也是打开状态,密码插件也改回旧版本的mysql_native_password,权限也刷新过,甚至服务也重启过,但还是不能登录。

    当时查不到原因,只能暂时放弃。

    这几天放假,我突然想到一个问题:我的mysql并不是安装在默认目录的,而且配置文件也不是放在mysql的安装目录,但我在启动mysql服务时,只使用了net start mysql,并没有指定配置文件目录,那么它是怎么发现我使用哪个配置文件呢?

    进去service.msc,检查了一下mysql服务的详细信息,发现启动时确实是没指定配置文件的。于是猜测会不会是由于安装的配置文件(我安装时有指定配置文件)与启动配置文件不一样导致数据库出现异常

    尝试了一下在mysql服务加上启动参数,指定配置文件后重启,发现居然可以远程连接了!

    但在服务管理页面参数配置不是永久的,只要一关闭服务参数就消失。每次都要进services.msc界面启动服务也是麻烦事,于是在网上找了一下,发现可以使用以下命令指定服务启动的参数:

    sc start mysql --defaults-file=配置文件路径
    

    不过奇怪的是问题居然无法重现,当我再次停了服务,以netstat start mysql启动服务时,发现客户端还是可以远程连接。

    后来尝试了一下重装数据库,也没法重现之前的问题,不知道怎么回事。不过在重装过程中,我发现之前安装时犯了一个错误:

    安装mysql服务时,我使用的命令是:

    mysqld  -install  mysql
    

    没有指定 --defaults-file=配置文件路径(网上的教程都是使用默认配置文件,不需要加上--defaults-file参数)

    另外还有一点需要注意,一定要进行mysql安装目录下面的bin目录执行mysqld -install mysql --defaults-file=配置文件路径

    不然生成的mysql服务可执行程序路径可能是错误的,并且这样做还有一个好处:--defaults-file=配置文件路径这个命令参数会附加到服务安装程序路径,这样就可以使用net命令管理服务了,不需要使用sc命令管理。

    看网上介绍的mysql安装教程,非常简单,但我自己实际操作时却碰上了这个奇葩问题,前后花了几天时间,才把问题解决。难怪有一句古话说:“纸上得来终觉浅,绝知此事需躬行”

  • 相关阅读:
    【阅读】读书只是生活方式的一种
    【Android崩溃记录】持续更新(bugly)
    【iOS】判断字符串是否是url及从字符串中提取url
    【React Native】正则判断字符串中是否包含url、提取字符串中的url
    【Objective-C】自定义UITextView(placeholder,长按换行,文字位置、文字间距等)
    【Swift】监听耳机插入拔出的通知
    INS(Instagram)如何绑定谷歌二次验证码/谷歌身份验证/双重认证?
    脸书(Facebook)如何绑定谷歌二次验证码/谷歌身份验证/双重认证?
    推特(Twitter)如何绑定谷歌二次验证码/谷歌身份验证/双重认证?
    TeamViewer如何绑定谷歌二次验证码/谷歌身份验证?
  • 原文地址:https://www.cnblogs.com/kingstarer/p/13762245.html
Copyright © 2020-2023  润新知