`
topzhujia
  • 浏览: 56057 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

MySQL的远程连接

阅读更多

在默认情况下,MySQL只允许本地连接并不允许远程连接。为什么会这样呢?下面这段话会解决这个问题。

Internally, the server stores privilege information in the grant tables of the mysql database (that is, in the database named mysql). The MySQL server reads the contents of these tables into memory when it starts and bases access-control decisions on the in-memory copies of the grant tables.

The MySQL privilege system ensures that all users may perform only the operations permitted to them. As a user, when you connect to a MySQL server, your identity is determined by the host from which you connect and the user name you specify. When you issue requests after connecting, the system grants privileges according to your identity and what you want to do.

接下来我们看一下mysql database中user table的内容。

mysql -uroot -pyourpasswd

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database changed

mysql> select host, user from user ;

+-----------+------------------+

| host | user |

+-----------+------------------+

| 127.0.0.1 | root |

| localhost | debian-sys-maint |

| localhost | root |

| ubuntu | root |

+-----------+------------------+

5 rows in set (0.00 sec)

到此为止我们应该能明白如何进行远程连接了。没错,把我们的host(也就是上文中提到的the host from which you connect中的host)想办法添加到user表中。

方法当然有很多。

其中一个就是直接update user table。注意哦我说的是update(SQL中的update),你也可以insert。下面我们看一下user的结构,也许你会放弃insert的想法。

+-----------------------+-----------------------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-----------------------+-----------------------------------+------+-----+---------+-------+

| Host | char(60) | NO | PRI | | |

| User | char(16) | NO | PRI | | |

| Password | char(41) | NO | | | |

| Select_priv | enum('N','Y') | NO | | N | |

| Insert_priv | enum('N','Y') | NO | | N | |

| Update_priv | enum('N','Y') | NO | | N | |

| Delete_priv | enum('N','Y') | NO | | N | |

| Create_priv | enum('N','Y') | NO | | N | |

| Drop_priv | enum('N','Y') | NO | | N | |

| Reload_priv | enum('N','Y') | NO | | N | |

| Shutdown_priv | enum('N','Y') | NO | | N | |

| Process_priv | enum('N','Y') | NO | | N | |

| File_priv | enum('N','Y') | NO | | N | |

| Grant_priv | enum('N','Y') | NO | | N | |

| References_priv | enum('N','Y') | NO | | N | |

| Index_priv | enum('N','Y') | NO | | N | |

| Alter_priv | enum('N','Y') | NO | | N | |

| Show_db_priv | enum('N','Y') | NO | | N | |

| Super_priv | enum('N','Y') | NO | | N | |

| Create_tmp_table_priv | enum('N','Y') | NO | | N | |

| Lock_tables_priv | enum('N','Y') | NO | | N | |

| Execute_priv | enum('N','Y') | NO | | N | |

| Repl_slave_priv | enum('N','Y') | NO | | N | |

| Repl_client_priv | enum('N','Y') | NO | | N | |

| Create_view_priv | enum('N','Y') | NO | | N | |

| Show_view_priv | enum('N','Y') | NO | | N | |

| Create_routine_priv | enum('N','Y') | NO | | N | |

| Alter_routine_priv | enum('N','Y') | NO | | N | |

| Create_user_priv | enum('N','Y') | NO | | N | |

| Event_priv | enum('N','Y') | NO | | N | |

| Trigger_priv | enum('N','Y') | NO | | N | |

| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |

| ssl_cipher | blob | NO | | NULL | |

| x509_issuer | blob | NO | | NULL | |

| x509_subject | blob | NO | | NULL | |

| max_questions | int(11) unsigned | NO | | 0 | |

| max_updates | int(11) unsigned | NO | | 0 | |

| max_connections | int(11) unsigned | NO | | 0 | |

| max_user_connections | int(11) unsigned | NO | | 0 | |

+-----------------------+-----------------------------------+------+-----+---------+-------+

很多很长,对吧,那好吧我们寻求另外一个更直观的解决办法。

GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'administrator' WITH GRANT OPTION;

FLUSH PRIVILEGES;

授与admin用户从任何其它主机发起的访问(通配符%)

接下来就是测试我们的配置了。

在另外一个装有MySQL client的机器上登录MySQL Server。如果没有错误就恭喜你了。不幸的是我的出错了。

 

思索很久终于找到解决办法,在此要备注一下,以免以后时间长了,忘了还要从头来。

刚开始我以为是授权的配置错了。可是思来想去也道不出个所以然。所以我决定在本地执行一下mysql -hip -uuser -ppasswd.结果同样报错。用netstat -nal | grep tcp查得关于mysql的listen: 127.0.0.1:3306 。如果把它改为本机ip效果如何呢?反正远程连接现在是不能用所以就抱着尝试一下的心理,把/etc/mysql/my.inf中的bind-address的值改为192.168.186.134然后sudo /etc/init.d/mysql restart。皇天不负有心人,嘿嘿,居然可以用了。可以用了就先不管它了,以后出了问题再去解决。

For details, see MySQL manual

分享到:
评论

相关推荐

    牛族MYSQL 远程连接器1.8

    【牛族MYSQL远程连接器1.8】是一款专为MySQL数据库设计的图形化远程连接工具,它使得用户可以通过直观的用户界面与远端MySQL服务器进行交互。这款软件简化了数据库管理,尤其是对于需要频繁跨网络操作数据库的专业...

    设置mysql远程连接

    ### 设置MySQL远程连接知识点详解 #### 一、背景与需求 在进行数据库管理与应用开发的过程中,有时我们需要从远程服务器访问MySQL数据库。这通常适用于分布式系统或需要进行远程调试及维护的情况。为了实现这一...

    牛族MYSQL远程连接器1.6

    1 可以无需安装MYSQL数据库,用SuperMysql连接器可以连接远程MYSQL数据库。 2 远程数据库表直接显示在程序的显示框中,无需手工输入指令。 3 程序绑定了三个MYSQL指令。 增加功能: a 远程更改密码时可以自己定义...

    Linux开启mysql远程连接

    ### Linux开启MySQL远程连接详解 #### 一、背景介绍 随着云计算和大数据技术的发展,Linux作为服务器操作系统的优势日益凸显,而MySQL作为一款广泛使用的开源关系型数据库管理系统,在Linux环境下更是得到了广泛...

    mysql远程连接工具

    真正好用的mysql连接工具,内附破解码,真正好用。。

    通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法.pdf

    Navicat for MySQL 远程连接错误 1130 解决方法 Navicat for MySQL 是一款功能强大的数据库管理工具,但是在远程连接 MySQL 服务器时,可能会遇到错误 1130,这是因为 MySQL 服务器不允许从远程主机连接。下面我们...

    MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)

    远程连接mysql是总是提示: 代码如下:Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0 很明显这是连接初始化阶段就丢失了连接的错误。 google半天大多是说的注释掉...

    mysql远程连接不了

    mysql远程连接不了

    mysql远程连接失败解决方法.docx

    MySQL 远程连接失败解决方法 知识点1:MySQL 远程连接的必要条件 MySQL 远程连接需要满足两个必要条件:一是 MySQL 服务器需要开启远程登录功能,二是 MySQL 用户需要有远程连接的权限。在本文中,我们可以看到...

    MySQL远程连接工具 Navicat for SQL Server

    MySQL远程连接工具 Navicat for SQL Server 解压就可以用

    阿里云下配置MySQL远程连接的步骤详解

    在阿里云上配置MySQL远程连接是一项常见的操作,特别是在需要通过第三方工具如Navicat进行数据库管理时。默认情况下,MySQL仅允许本地连接,因此需要进行一些配置步骤来启用远程访问。以下是详细的步骤: 1. **登录...

    Mysql远程连接本质.docx

    MySQL远程连接的本质是允许外部设备或服务器通过网络访问MySQL服务器上的数据库。这一功能在分布式系统、云服务和多用户协作的环境中尤为重要。以下将详细解释MySQL远程连接的配置过程及涉及的关键概念。 首先,...

    Navicat for MySQL远程连接工具最新安装包

    Navicat for MySQL远程连接工具最新安装包,下载直接安装就可以使用,非常实用的数据库远程连接工具. Navicat for MySQL 是管理和开发 MySQL 或 MariaDB 的理想解决方案。它是一套单一的应用程序,能同时连接 MySQL ...

    mysql远程连接错误1130的解决方法.pdf

    mysql 远程连接错误 1130 的解决方法 mysql 远程连接错误 1130 是一个常见的问题,当我们尝试从远程访问 mysql 服务器时,可能会遇到这个错误。这个错误的原因是因为 mysql 服务器不允许远程连接的用户权限问题。...

    解决mysql远程连接不上问题

    ### 解决MySQL远程连接不上问题 在日常的数据库管理和维护工作中,我们经常会遇到MySQL数据库只能通过本地`localhost`访问而无法通过IP地址进行远程连接的问题。这种情况不仅限制了数据库的可访问性和灵活性,还...

    开启mysql远程连接功能.txt

    ### 开启MySQL远程连接功能 #### 背景与意义 在现代的互联网应用中,数据库作为数据存储的核心部分,其稳定性和可访问性尤为重要。MySQL作为一种广泛使用的开源关系型数据库管理系统,在各种规模的应用场景中都有...

    MYSQL数据库远程连接

    MYSQL数据库远程连接,例程,需要有亦众的支持库才能编译。

    mysql远程连接错误1130的解决方法.docx

    MySQL 远程连接错误 1130 的解决方法 在 MySQL 中,远程连接错误 1130 是一个常见的问题,导致用户无法连接到 MySQL 服务器。该错误通常是由于用户权限问题引起的。在本文中,我们将介绍两种解决该问题的方法:修改...

    通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法.docx

    ### 通过Navicat for MySQL远程连接遇到mysql 1130错误的解决方法 在使用Navicat for MySQL进行远程连接时,如果遇到了错误代码1130(`ERROR 1130: Host 'IP地址' is not allowed to connect to this MySQL server`...

Global site tag (gtag.js) - Google Analytics