好的,免责声明:我绝对是 mysql 菜鸟。给我任何其他开发类型的领域,我都可以。
因此,我刚开始使用 Ubuntu 12.04 并设置了 mysql。从未真正使用过 localhost,因为我们在工作中有一个我经常访问的临时环境。但是,一个客户有一个非常大的数据库转储,我需要访问它,但我不想把它放在服务器上让每个人都处理,所以我尝试使用 localhost
每当我尝试通过 MySQL Workbench 访问它时,我都会收到错误,因此我查看了网上的几篇文章并尝试了几种不同的方法,但如果我在终端中运行以下命令,就会收到错误:
mysql -u root -p -h 127.0.0.1
产生以下内容
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
但是,如果我像这样访问 mysql:
mysql -u root -p
然后输入我的密码,我就可以正常访问mysql了。
以下是
/etc/mysql/my.cnf
目前包含的内容(我曾尝试寻找此文件的其他版本)。为简洁起见,我省略了所有注释掉的部分。
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
log_error = /var/log/mysql/error.log
expire_logs_days = 10
max_binlog_size = 100M
[mysqldump]
quick quote-names
max_allowed_packet = 16M
[mysql]
[isamchk] key_buffer = 16M
!includedir /etc/mysql/conf.d/
答案1
当你使用以下命令登录 mysql 时
mysql -u root -p
请运行此命令
SELECT USER(),CURRENT_USER();
用户()报告您如何在 MySQL 中进行身份验证
当前用户()报告您被允许在 MySQL 中进行身份验证的方式
我之前讨论过这个问题:我如何查看我以哪个用户身份登录 MySQL?
对于你的情况,我猜是当前用户()是'root'@'localhost'
。
连接到 MySQL 需要做两件事127.0.0.1
:
- 您需要用户
'root'@'127.0.0.1'
定义。这可能是用户()说。 - 您需要明确使用 TCP/IP 协议
要创建用户,请登录 MySQL 并运行SHOW GRANTS;
无论备份是什么,将其复制并粘贴到编辑器中,localhost
用替换127.0.0.1
,将编辑的命令放入 mysql 中并执行它。
现在,要使用 TCP/IP 登录,请执行以下操作:
mysql -u root -p -h 127.0.0.1 --protocol=tcp
一旦您登录并运行SELECT USER(),CURRENT_USER();
,您将看到一些不同的东西。
试一试 !!!
答案2
检查mysql服务器是否正在运行,配置防火墙允许mysql服务器端口。检查这个关联还
答案3
读这并检查您的防火墙配置。
答案4
我在尝试连接到远程 mysql db 时遇到了同样的问题。
我通过打开数据库服务器上的防火墙以允许流量通过来修复此问题:
sudo ufw allow mysql