zoukankan      html  css  js  c++  java
  • MySQL远程访问设置终极方法

    这篇文章主要介绍了MySQL远程访问设置终极方法,本文总结了多种设置方法和技巧,是解决远程访问的终极解决方案,需要的朋友可以参考下

    数据库对于服务端开发人员来说,几乎就是左膀右臂。几乎每一个服务端开发人员都要和数据库打交道。而MySQL又以其开源免费,小巧玲珑,简单易用,功能强大占据中国数据库使用份额的半壁江山。从去年接触到Vagrant以来,Vagrant以其方便易用深深吸引了D瓜哥。为了尽可能地和生产环境保持尽可能的一致性,减少不必要的问题的发生,Vagrant+Ubuntu+MySQL几乎是绝配。

    MySQL允许远程访问的设置

    1.注释bind-address = 127.0.0.1。

    复制代码代码如下:

    >cd /etc/mysql
    >sudo vim my.cnf

    将bind-address = 127.0.0.1注释掉(即在行首加#),如下:

    复制代码代码如下:

    # Instead of skip-networking the default is now to listen only on
    # localhost which is more compatible and is not less secure.
    # bind-address          = 127.0.0.1

    除了注视掉这句话之外,还可以把后面的IP地址修改成允许连接的IP地址。但是,如果只是开发用的数据库,为了方便起见,还是推荐直接注释掉。

    从上面的注释中,可以看出,旧版本的MySQL(从一些资料上显示是5.0及其以前的版本)上使用的是skip-networking。所以,善意提醒一下,使用旧版本的小伙伴请注意一下。

    2.删除匿名用户

    登录进数据库:

    复制代码代码如下:

    >mysql -uroot -p123456

    然后,切换到数据库mysql。SQL如下:
    复制代码代码如下:

    use mysql;

    然后,删除匿名用户。SQL如下:
    复制代码代码如下:

    delete from user where user='';

    3.增加允许远程访问的用户或者允许现有用户的远程访问。

    接着上面,删除匿名用户后,给root授予在任意主机(%)访问任意数据库的所有权限。SQL语句如下:

    复制代码代码如下:

    mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

    如果需要指定访问主机,可以把%替换为主机的IP或者主机名。另外,这种方法会在数据库mysql的表user中,增加一条记录。如果不想增加记录,只是想把某个已存在的用户(例如root)修改成允许远程主机访问,则可以使用如下SQL来完成:
    复制代码代码如下:

    update user set host='%' where user='root' and host='localhost';

    4.退出数据库

    复制代码代码如下:

    mysql> exit

    在MySQL Shell执行完SQL后,需要退出到Bash执行系统命令,需要执行exit。因为这个太常用也太简单。以下内容就提示“退出”,不再重复列出这个命令。

    5.重启数据库

    完成上述所有步骤后,需要重启一下数据库,才能让修改的配置生效。执行如下命令重启数据库:

    复制代码代码如下:

    >sudo service mysql restart

    到此为止,应该就可以远程访问数据库了。

    当然,“雄关漫道真如铁”,世界并不是想象的那么图样图森破,可能还会遇到一些问题,影响到正常使用。下面,D瓜哥把自己遇到的一些问题整理处理,方便各位朋友参考解决。(退一步讲,没有这些问题来撑门面,D瓜哥该叫“终极解决办法”吗?!哈哈)

    常见问题解答

    华仔说的好啊,“出来混的都是要还的”。对于我们从事挨踢行业的小伙伴来说,“出来混的都是从问题堆里走的”。冯巩也说的好,“作为北京人,兜里没揣两千块钱都不好意思给别人打招呼”。D瓜哥想,对于干挨踢的小伙伴们来说,没遇到过问题,都不好意思说自己是干挨踢的。所以,对于一些常见的问题,或者说是常用操作可能引发的问题来说,有必要整理一下,方便以后随时查阅使用。

    ERROR 1045 (28000)错误的原因以及解决办法

    复制代码代码如下:

    >mysql -uroot -p123456
    Warning: Using a password on the command line interface can be insecure.
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    如果没有按照上面流程,删除匿名用户,再或者你是按照网上查的资料来进行设置(大多都没有“删除匿名用户”这步),都可能导致这个问题。至于这个问题的原因说起来,D瓜哥感觉“怪怪”的。要说清楚这个原因,还得从MySQL数据库的用户认证机制说起。

    MySQL中,用户相关的信息存在数据库mysql的user。然我们看一下该表的结构,命令以及返回值如下:

  • 相关阅读:
    Oracle 10g R2 Transparent Data Encryption 透明数据加密
    Spark之Task原理分析
    一个Spark job的生命历程
    Spark调优秘诀——超详细
    NLP文本相似度(TF-IDF)
    Spark 参数配置的几种方法
    Spark提交应用程序之Spark-Submit分析
    spark_flume_mysql 整合
    Spark Programming Guide《翻译》
    windows下Idea结合maven开发spark和本地调试
  • 原文地址:https://www.cnblogs.com/zhoading/p/15159227.html
Copyright © 2011-2022 走看看