Leo*_*Leo 328 mysql mysql-workbench
我在本地计算机上安装了MySQL Community Edition 5.5,我想允许远程连接,以便我可以从外部源连接.
我怎样才能做到这一点?
mju*_*rez 724
MySQL默认允许这样做.
默认情况下禁用的是远程root访问.如果要启用它,请在本地运行此SQL命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
然后找到以下行并在您的文件中将其注释掉my.cnf,该文件通常存在/etc/mysql/my.cnf于Unix/OSX系统上.在某些情况下,文件的位置是/etc/mysql/mysql.conf.d/mysqld.cnf).
如果它是一个Windows系统,你可以在MySQL安装目录中找到它,通常是类似C:\Program Files\MySQL\MySQL Server 5.5\ 的文件名my.ini.
改变线
bind-address = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
至
#bind-address = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
并重新启动MySQL服务器(Unix/OSX和Windows)以使更改生效.
Mat*_*ock 48
完成上述所有操作后,我仍无法root远程登录,但Telnetting to port 3306确认MySQL接受了连接.
我开始查看MySQL中的用户,发现有多个root用户使用不同的密码.
select user, host, password from mysql.user;
Run Code Online (Sandbox Code Playgroud)
所以在MySQL我再次为root设置所有密码时,我终于可以远程登录了root.
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
Run Code Online (Sandbox Code Playgroud)
May*_*tel 34
根据我的经验,您可以在此路径下找到配置文件/etc/mysql/mysql.conf.d/mysqld.cnf.
(我挣扎了一段时间才找到这条路)
Kus*_*hal 25
在我的情况下,我试图连接到分操作系统上的远程mysql服务器.经过很多解决方案(授予所有权限,删除IP绑定,启用网络)问题仍然没有得到解决.
事实证明,在研究各种解决方案时,我遇到了iptables,这让我意识到mysql端口3306不接受连接.
这是关于我如何检查和解决此问题的一个小注释.
telnet (mysql server ip) [portNo]
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
service iptables stop
希望这可以帮助.
alb*_*rus 16
远程登录的所有过程。默认情况下远程登录是关闭的。您需要手动打开所有ip..才能访问所有ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)
特定IP
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)
然后
flush privileges;
Run Code Online (Sandbox Code Playgroud)
您可以检查您的用户主机和密码
SELECT host,user,authentication_string FROM mysql.user;
Run Code Online (Sandbox Code Playgroud)
现在你的职责是改变这一点
bind-address = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
你可以找到这个
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Run Code Online (Sandbox Code Playgroud)
如果你在那里没有找到这个,那么试试这个
sudo nano /etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)
在此评论
#bind-address = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
然后重启Mysql
sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)
现在享受远程登录
Hir*_*ghi 15
请按照下面提到的步骤为MySQL用户设置通配符远程访问.
(1)打开cmd.
(2)导航到路径C:\ Program Files\MySQL\MySQL Server 5.X\bin并运行此命令.
mysql -u root -p
(3)输入root密码.
(4)执行以下命令以提供权限.
授予所有特权*.*''USERNAME'@'IP'由'密码'识别;
USERNAME:您希望连接到MySQL服务器的用户名.
IP:您希望允许访问MySQL服务器的公共IP地址.
密码:使用的用户名密码.
可以用%替换IP以允许用户从任何IP地址进行连接.
(5)按照命令退出并取消.
FLUSH特权;
出口; 或者\ q
Pro*_*ton 10
当我从事一个以MySQL服务器作为数据库的Java 项目时,我遇到了这个挑战。
我是这样做的:
首先,确认您的MySQL服务器配置允许远程连接。使用您喜欢的文本编辑器打开 MySQL 服务器配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Run Code Online (Sandbox Code Playgroud)
向下滚动到绑定地址行,并确保将其注释掉或替换为0.0.0.0(以允许所有远程连接)或替换为您想要远程连接的Ip 地址。
进行必要的更改后,保存并退出配置文件。通过重新启动 MySQL 服务来应用对 MySQL 配置文件所做的更改:
sudo systemctl restart mysql
Run Code Online (Sandbox Code Playgroud)
接下来,登录到安装它的服务器上的 MySQL 服务器控制台:
mysql -u root -p
Run Code Online (Sandbox Code Playgroud)
输入你的mysql用户密码
检查您想要的用户已经有权访问的主机。就我而言,用户是root:
SELECT host FROM mysql.user WHERE user = "root";
Run Code Online (Sandbox Code Playgroud)
这给了我这个输出:
+-----------+
| host |
+-----------+
| localhost |
+-----------+
Run Code Online (Sandbox Code Playgroud)
接下来,我运行以下命令来授予root用户远程访问名为 的数据库my_database:
USE my_database;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-password';
Run Code Online (Sandbox Code Playgroud)
注意:%授予用户从网络上所有主机的远程访问权限。您可以使用以下命令指定要授予用户访问权限的各个主机的 IP 地址 -GRANT ALL PRIVILEGES ON *.* TO 'root'@'Ip-Address' IDENTIFIED BY 'my-password';
之后我检查了用户现在可以访问的主机。就我而言,用户是root:
SELECT host FROM mysql.user WHERE user = "root";
Run Code Online (Sandbox Code Playgroud)
这给了我这个输出:
+-----------+
| host |
+-----------+
| % |
| localhost |
+-----------+
Run Code Online (Sandbox Code Playgroud)
最后,您可以尝试使用以下命令从另一台服务器连接到 MySQL 服务器:
mysql -u username -h mysql-server-ip-address -p
Run Code Online (Sandbox Code Playgroud)
其中u代表用户,h代表mysql-server-ip-address,p代表密码。所以就我而言是:
mysql -u root -h 34.69.261.158 -p
Run Code Online (Sandbox Code Playgroud)
输入你的mysql用户密码
根据您的MySQL服务器版本,您应该得到以下输出:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.31 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Run Code Online (Sandbox Code Playgroud)
就这样。
我希望这有帮助
Nam*_*ama 10
关闭链接 /etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/mysql/my.cnf 处的注释:
bind-address = 127.0.0.1 =>> #bind-address = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
更改主机名以便所有计算机都可以访问它,在本地运行以下 SQL 命令:
UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='root';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
重启服务:
sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)
打开mysql端口:
sudo ufw allow 3306
Run Code Online (Sandbox Code Playgroud)
如果你从brew它安装了MySQL,那么默认情况下只会在本地接口上监听.要解决此问题,您需要编辑/usr/local/etc/my.cnf并将bind-addressfrom 更改127.0.0.1为*.
然后跑brew services restart mysql.
如果您的MySQL服务器进程正在侦听127.0.0.1或:: 1,那么您将无法远程连接.如果您有此bind-address设置/etc/my.cnf可能是问题的根源.
您还必须为非localhost用户添加权限.
小智 5
仅供参考,我花了几个小时解决这个问题。最后我打电话给我的托管服务提供商,发现在我的情况下使用云服务器,在 1and1 的控制面板中,他们有一个辅助防火墙,您必须克隆并添加端口3306.一加我就直接进去了..
| 归档时间: |
|
| 查看次数: |
797643 次 |
| 最近记录: |