如何允许远程访问MySQL

这篇具有很好参考价值的文章主要介绍了如何允许远程访问MySQL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

许多网站和应用程序一开始都将web服务器和数据库后端托管在同一台机器上。不过,随着时间的推移,这样的设置可能会变得繁琐和难以扩展。一种常见的解决方案是通过设置远程数据库来分离这些功能,允许服务器和数据库在各自的机器上按自己的速度增长。

用户在尝试建立远程MySQL数据库时遇到的一个更常见的问题是,他们的MySQL实例只被配置为监听本地连接。这是MySQL的默认设置,但它不适用于远程数据库设置,因为MySQL必须能够监听到服务器的外部 IP地址。为此,打开“mysqld.cnf”文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

找到以bind-address开头的行。它看起来像这样:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# 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
. . .

默认情况下,该值设置为127.0.0.1,这意味着服务器将只查找本地连接。你需要改变这个指令引用外部IP地址。为了解决问题,你可以将此指令设置为通配符IP地址,*::0.0.0.0:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 0.0.0.0
. . .

**注意:**在某些版本的MySQL中,bind-address指令可能默认不在mysqld.cnf文件中。在这种情况下,将下面这行代码添加到文件的底部:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
bind-address            = 0.0.0.0

修改这行代码后,保存并关闭文件(CTRL + XY,然后回车,如果你用nano编辑它)。
然后重启MySQL服务,这样对mysqld.cnf的修改才能够生效:

sudo systemctl restart mysql

如果你有一个已经存在的MySQL用户帐户,你打算用它从远程主机连接数据库,你需要重新配置该帐户以从远程服务器连接,而不是从localhost连接。用你的MySQL root用户或者其他有特权的用户账号打开MySQL客户端:

sudo mysql

如果你为root开启了密码身份验证,那么你需要使用以下命令来访问MySQL shell:

mysql -u root -p

要更改用户的主机,可以使用MySQL的RENAME user 命令。运行以下命令,确保将==sammy==更改为MySQL用户帐户的名称,并将==remote_server_ip==更改为远程服务器的IP地址:

RENAME USER 'sammy'@'localhost' TO 'sammy'@'remote_server_ip';

或者,你可以创建一个新用户帐户,只需要使用以下命令从远程主机连接:

CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED BY 'password';

注意:此命令将创建一个使用MySQL默认身份验证插件caching_sha2_password进行身份验证的用户。然而,在某些版本的PHP中有一个已知的问题,可能会导致这个插件出现问题。

如果您计划在PHP应用程序(例如phpMyAdmin)中使用此数据库,则可能希望创建一个远程用户,该用户将使用旧的身份验证,但仍然安全,取而代之的是mysql_native_password插件:

CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';

如果你不确定,你总是可以创建一个使用caching_sha2_plugin进行身份验证的用户,然后使用以下命令ALTER它:

ALTER USER 'sammy'@'remote_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';

然后授予新用户满足您特定需求的适当权限。下面的例子授予用户全局权限来CREATEALTERDROP数据库、表和用户,以及从服务器上的任何表中INSERTUPDATEDELETE数据。它还允许用户使用SELECT查询数据,使用REFERENCES关键字创建外键,并使用RELOAD特权执行FLUSH操作。但是,您应该只授予用户所需的权限,因此可以根据需要调整您自己的用户权限。

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'remote_server_ip' WITH GRANT OPTION;

接下来,运行FLUSH PRIVILEGES命令是良好的实践。这将释放服务器通过前面的CREATE USERGRANT语句缓存的任何内存:

FLUSH PRIVILEGES;

然后你可以退出MySQL客户端:

exit

最后,假设你已经在数据库服务器上配置了防火墙,你还需要打开3306端口——MySQL的默认端口——以允许流量访问MySQL。

如果您只计划从一台特定的机器访问数据库服务器,则可以使用以下命令授予该机器远程连接数据库的独占权限。确保“= = remote_IP_address = =”替换为实际的机器的IP地址与计划:

sudo ufw allow from remote_IP_address to any port 3306

如果将来需要从其他机器访问数据库,可以使用此命令授予它们临时访问权限。记住,包括各自的IP地址。

或者,你可以使用以下命令允许从* 任意 * IP地址连接到MySQL数据库:

警告:此命令将允许任何人访问您的MySQL数据库。如果你的数据库中有任何敏感数据,不要运行它。联系:

sudo ufw allow 3306

接下来,尝试从另一台机器远程访问数据库:

注意:如果您添加了一个防火墙规则,只允许来自特定IP地址的连接,则必须尝试访问与该地址相关联的机器的数据库。

mysql -u user -h database_server_ip -p

如果你能够访问数据库,这就确认了配置文件中的bind-address指令出了问题。请注意,将bind-address设置为0.0.0.0是不安全的,因为它允许从任何IP地址连接到你的服务器。另一方面,如果你仍然无法远程访问数据库,那么可能是其他原因导致了问题。文章来源地址https://www.toymoban.com/news/detail-690958.html

到了这里,关于如何允许远程访问MySQL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何允许远程访问MySQL

    许多网站和应用程序一开始都将web服务器和数据库后端托管在同一台机器上。不过,随着时间的推移,这样的设置可能会变得繁琐和难以扩展。一种常见的解决方案是通过设置远程数据库来分离这些功能,允许服务器和数据库在各自的机器上按自己的速度增长。 用户在尝试建

    2024年02月10日
    浏览(33)
  • 基于CentOS7安装MySQL数据库并远程访问

    MySQL是目前最为流行的开放源码的数据库,是完全网络化的跨平台的关系型数据库系统,它是由瑞典MySQLAB公司开发,目前属于Oracle公司。任何人都能从Internet下载MySQL软件,而无需支付任费用,并且“开放源码”意味着任何人都可以使用和修改该软件。下面我们来学习如何在

    2024年02月11日
    浏览(39)
  • 宝塔面板安装配置MySQL,轻松管理数据库【公网远程访问】

    宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板+cpolar即可快速搭建一个mysql数据库服务并且实现公网远程访问。 我们打开宝塔面板,点击数据库,然后点击安装mysql服务, 选择极速安装即可,版本默认 然后等待安装完成 安装

    2024年02月05日
    浏览(37)
  • 宝塔面板安装MySQL数据库,并内网穿透实现公网远程访问

    宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板+cpolar即可快速搭建一个mysql数据库服务并且实现公网远程访问。 我们打开宝塔面板,点击数据库,然后点击安装mysql服务, 选择极速安装即可,版本默认 然后等待安装完成 安装

    2024年02月03日
    浏览(42)
  • 宝塔面板部署MySQL并结合内网穿透实现公网远程访问本地数据库

    前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板+cpolar即可快速搭建一个mysql数据库服务并且实现公网远程访问。 1.Mysql服务安装 我们打开宝塔面板,点击数据库,然后点击安装mysql服务, 选择极速安装即可,版本默认 然

    2024年01月24日
    浏览(39)
  • Node.js程序如何访问MySQL数据库呢?Sequelize操作MySQL数据库详解

    当我们安装好MySQL后,Node.js程序如何访问MySQL数据库呢? 访问MySQL数据库只有一种方法,就是通过网络发送SQL命令,然后,MySQL服务器执行后返回结果。 我们可以在命令行窗口输入mysql -u root -p,然后输入root口令后,就连接到了MySQL服务器。因为没有指定–host参数,所以我们连

    2023年04月08日
    浏览(33)
  • 如何通过IP访问MySQL数据库

    1.1 改表法 如果不从远程登陆,可以用 localhost 。这个时候只要在 localhost 的那台电脑,登入 mysql 后,更改 \\\"mysql\\\" 数据库中 \\\"user\\\" 表里的 \\\"host\\\" 字段,把 \\\"localhost\\\" 改称 \\\"%\\\" ,即可。 1.2 授权法 例如,你想用户 myuser 使用密码 mypassword 通过 IP 地址连接到 MySQL 服务器,使用: 如果你

    2024年02月06日
    浏览(32)
  • Android Termux安装MySQL数据库并通过内网穿透实现公网远程访问

    Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身Linux。 MariaDB是MySQL关系数据库管理系统的一个复刻,由社区开发,有商业支持,旨在继续保持在 GNU GPL 下开源。开发这个分支的原因之一是:甲骨文公司

    2024年02月04日
    浏览(31)
  • 如何在阿里云服务器上安装mysql数据库并开启远程连接

    输入如下指令,正确输入密码后进入到数据库中 在登录到数据库中之后,输入如下指令使用使用数据库(别忘记分号哟!) 按下回车后有如下提示 输入如下指令开启root用户远程连接权限 设置root用户密码 刷新权限 退出 最后按下 ESC 键退出编辑模式,并输入“:wq”保存并退出配

    2024年02月04日
    浏览(48)
  • 如何在安卓手机Termux上安装MariaDB(MySQL)并实现远程连接数据库

    Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身Linux。 MariaDB是MySQL关系数据库管理系统的一个复刻,由社区开发,有商业支持,旨在继续保持在 GNU GPL 下开源。开发这个分支的原因之一是:甲骨文公司

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包