ChatGPT解决这个技术问题 Extra ChatGPT

从命令行访问mysql远程数据库

我有一台带有 Rackspace 的服务器。我想从我的本地机器命令行访问数据库。

我试过像:

mysql -u username -h my.application.com -ppassword

但它给出了一个错误:

错误 2003 (HY000): 无法连接到“my.application.com”上的 MySQL 服务器 (10061)

是什么导致了这个错误,我该如何连接到远程数据库?

10061 = 连接被拒绝
最好使用不带密码的 -p 标志,这样密码就不会保存在您的 bash 历史记录中。

R
Ronan Boiteau

要直接登录到远程 mysql 控制台,请使用以下命令:

mysql -u {username} -p'{password}' \
    -h {remote server ip or name} -P {port} \
    -D {DB name}

例如

mysql -u root -p'root' \
        -h 127.0.0.1 -P 3306 \
        -D local

-p 后没有空格,如 documentation 中所指定

通过切换到提到的数据库,它将直接带您进入 mysql 控制台。


要指定数据库名称,我们需要添加 -D 。 mysql -u {username} -p{password} -h {remote server ip} -D {DB name}
如果我们需要指定具体的 PORT 怎么办?
在 MacOS High Sierra 版本 10.13.3 上的终端中无法使用
如果这是针对用户在控制台上键入的情况,您应该很容易避免在命令行中将密码作为未加密的文本传递。只需使用 -p 和指定的其余部分。脚本的执行将安全地询问您的密码。
K
Kedar Jangir

只需将其放在 ubuntu 的终端上:

mysql -u username -h host -p

现在按回车

终端会问你密码,输入密码,你就进入了数据库服务器


N
Nir Alfasi

编辑 my.cnf 文件:

vi /etc/my.cnf

确保:

bind-address=YOUR-SERVER-IP

如果你有这条线:

skip-networking

一定要评论它:

#skip-networking

不要忘记重新启动:

/etc/init.d/mysqld restart


绑定地址=您的服务器 IP 。这里我需要提到哪个IP是远程服务器IP?
@user1986299 不,您需要服务器的 IP(不是远程)
您应该授予自己访问权限...通过键入 mysql 从本地服务器登录您的数据库,然后:grant all privileges on *.* to 'root'@'%' identified by 'your-password'
永远不要授予 'root'@'%' 这是一个巨大的安全性不不!
@alfasin 这是一个影响深远的小调整,谢谢!
K
KayV

对于 Mac,使用以下命令:

mysql -u app -h hostaddress -P port -D dbname -p

然后在出现提示时输入密码。


不要尝试在 -p 标志之后输入密码,那将不起作用。如上所述,稍后将提示您输入密码值。这样做是为了在终端历史记录中没有存储未屏蔽的凭据。
t
the_unknown_spirit

试试这个命令 mysql -uuser -hhostname -PPORT -ppassword

我遇到了类似的情况,后来当用命令输入主机的mysql端口时,它就解决了。


mysql -u testuser -h 192.168.**.* -P 3306 -p password 为我工作
C
Cornea Valentin

如果您不想使用 ssh 隧道,则必须在 my.cnf 或 mysqld.cnf 中将 127.0.0.1 更改为您的本地 IP 地址(192.168.1.100)才能通过 LAN 访问。示例如下:

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

在 my.cnf 或 mysqld.cnf 中搜索 bind-address

bind-address            =  127.0.0.1

并将 127.0.0.1 更改为 192.168.1.100 (本地 IP 地址)

bind-address            =  192.168.1.100

要应用您所做的更改,必须使用下一个命令重新启动 mysql 服务器。

sudo /etc/init.d/mysql restart

修改用户 root 以获得局域网访问权限(在您想要访问的远程服务器中运行查询的波纹管)

root@192.168.1.100:~$ mysql -u root -p

..

CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

如果您只想从特定 ip 地址访问,请将 'root'@'%' 更改为 'root'@'(ip address or hostname)'

CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' WITH GRANT OPTION;
FLUSH PRIVILEGES;

然后你可以连接:

nobus@xray:~$ mysql -h 192.168.1.100 -u root -p

在 ubuntu 18.04 服务器上测试


最佳答案!谢谢
C
Community

尝试 telnet 3306。如果它没有打开连接,要么是防火墙设置,要么服务器没有监听(或不工作)。在服务器上运行 netstat -an 以查看服务器是否已启动。您可能不允许远程连接。请参阅 http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html


r
realPK

我假设你的机器上安装了 MySQL。填写缺失的详细信息后执行以下命令:

mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 

m
mivk

mysql 服务器通常配置为仅侦听 localhost (127.0.0.1),它们由 Web 应用程序使用。

如果这是您的情况,但您可以通过 SSH 访问您的服务器,您可以创建一个 ssh 隧道并通过它进行连接。

在您的本地计算机上,创建隧道。

ssh -L 3307:127.0.0.1:3306 -N $user@$remote_host

(此示例使用本地端口 3307,以防您在本地计算机上运行 mysql 并使用标准端口 3306)

现在你应该可以联系了

mysql -u $user -p -h 127.0.0.1 -P 3307

如何将多个端口同时转发到不同的服务器?我的用例——我们有几个位于防火墙后面的生产 Wordpress 服务器。还假设他们每个人都使用不同的 SSH 密钥来允许访问。
@RodrikTheReader:只需使用不同的端口号和适当的 $user@$host 变量重复命令。如果您有不同的密钥,您还可以在 ssh 命令中添加不同的 -i $identity_file
M
Manish Goswami

有简单的命令。

mysql -h {hostip} -P {port} -u {username} -p {database}

例子

mysql -h 192.16.16.2 -P 45012 -u rockbook -p rockbookdb

{hostip} 不会添加任何类型的端口详细信息,例如 192.10.10.26::45124
z
zoro juro

您可以使用以下代码连接到远程 MY SQL 数据库

mysql -u {database_user} -p{db_password} -h {host_name} -P {port_number}
mysql -u admin -p'your_password' -h your-company.aws.com -P 3306

A
Amirol Ahmad

必须检查对端口 3306 的传入访问是否被防火墙阻止。


我怎样才能检查这个
v
violentr

这个解决方案对我有用:

在您的远程机器(例如:295.13.12.53)上可以访问您的目标远程机器(运行 mysql 服务器)

ssh -f -L 295.13.12.53:3306:10.18.81.36:3306 user@295.13.12.53

解释:

ssh -f -L your_ssh_mashine_ipaddress:your_ssh_mashine_local_port:target_ipaddress:target_port user@your_ip_address -N

your_ssh_mashine_ipaddress - 它不是本地 IP 地址,它是您 ssh 到的 IP 地址,在本例中为 295.13.12.53

your_ssh_mashine_local_port - 这是自定义端口,不是 22,在本例中是 3306。

target_ipaddress - 您尝试转储数据库的机器的 ip。

target_port - 3306 这是 MySQL 服务器的真实端口。

user@your_ip_address - 这是您连接的 ssh mashine 的 ssh 凭据

完成所有这些后,请返回您的机器并执行以下操作:

mysqldump -h 295.13.12.53 -P 3306 -u username -p db_name > dumped_db.sql

将要求输入密码,输入您的密码并连接。希望这可以帮助。


r
ravi teja

试试这个,它的工作原理:

mysql -h {hostname} -u{username} -p{password} -N -e "{query to execute}"


l
levis

这个在 mysql 8 中为我工作,用你的主机名替换 hostname,用你的端口号替换 port_number,如果他不是 root,你也可以更改你的 mysql_user

      mysql --host=host_name --port=port_number -u root -p

Further Information Here


K
Karin Lahyani

你应该用'p'输入你的密码

mysql -u root -u 1.1.1.1 -p'MyPass'

D
Davinder Snehi

我也遇到了同样的错误。但是通过在远程mysql服务器上创建新的mysql用户然后连接发现它很有用。在远程服务器上运行以下命令:

CREATE USER 'openvani'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'openvani'@'localhost WITH GRANT 
OPTION;
CREATE USER 'openvani'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'openvani'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

现在您可以使用以下命令连接远程 mysql。

mysql -u openvani -h 'any ip address'-p

这是完整的帖子:

http://openvani.com/blog/connect-remotely-mysql-server/


A
Arun Panneerselvam

如果您使用的是 Windows,请尝试使用带有 MySQL 插件的 Visual Studio Code,这是一种在 Windows 机器上访问 MySQL 数据的简单集成方式。并且列出的数据库表可以执行任何自定义查询。