为什么我的 .my.cnf 设置不起作用?

Dav*_*uer 15 mysql configuration

我的桌面上的主目录中有一个 .my.cnf 文件,其中包括:

[dbid]
user = myusername
password = mypassword
database = dbname
host = server.location.com
Run Code Online (Sandbox Code Playgroud)

如果我没记错的话,在从 Ubuntu 10.04 升级到 11.04 之前,我能够使用命令

mysql dbid
Run Code Online (Sandbox Code Playgroud)

直接连接到数据库

但是今天我收到了这个错误:

ERROR 1049 (42000): Unknown database 'dbname'
Run Code Online (Sandbox Code Playgroud)

我做错了什么吗?

Der*_*ney 26

我不确定你以前的 .my.cnf 是如何工作的,实际上我以前从未使用过这些文件(主要是因为我不知道它们)。所以经过一些研究,我找到了这个链接,并提出了以下对我有用的 ~/.my.cnf :

[clientdbid]
password = mypass
database = dbname
host = server.location.com
Run Code Online (Sandbox Code Playgroud)

以及读取它的命令:

mysql --defaults-group-suffix=dbid
Run Code Online (Sandbox Code Playgroud)

需要指出的几件事(链接文章中的亮点):

  • 组前面必须有 'client' 才能被 mysql 读取
  • 必须跟踪任何 [client] 组,否则它将被覆盖

我在 Mac 上的 mysql 5.5 上对此进行了测试,效果很好。现在我知道了它们,我将使用它们!

更新 设置完后,我意识到命令行mysql --defaults-group-suffix=dbid有点笨重。因此,作为额外的奖励,假设您正在运行 Linux/Mac/Etc,请执行以下操作:

echo 'alias mysql_dbid="mysql --defaults-group-suffix=dbid"' >> ~/.profile
Run Code Online (Sandbox Code Playgroud)

dbid您的后缀组的名称在哪里。


Dav*_*uer 0

我的数据库管理员帮助我发现了这个问题,所以这里是引发这个问题的原始问题的解决方案:

问题(据我所知)是数据库只允许访问基于特定 IP 地址的计算机。用我的数据库管理员的话说,当我购买新计算机时,我的 IP 地址发生了变化,并且使用不同 IP 地址设置的帐户有不同的密码

我根据 user@olddesktopip.edu、user@newdesktopip.edu 和您的 IP 地址为您提供了几个不同的用户名。他们的密码都不一样,这导致了混乱,这是我的错。