MySQL在Linux上修改用户名

标签 mysql linux

我正在编写一个脚本来执行一些数据库维护,但 MySQL 不接受我试图传递的用户名。

我有一个名为“abc_wpsites”的 MySQL 用户和数据库,以及一个名为“abc_wpsitesdev”的用户和数据库。在这里,我尝试访问 abc_wpsitesdev,但 MySQL 不断尝试使用帐户“abc_wpsites”进行访问。

abc.com [~]# mysql -uabc_wpsitesdev --password='(redacted)' -h localhost abc_wpsitesdev
ERROR 1045 (28000): Access denied for user 'abc_wpsites'@'localhost' (using password: YES)
abc.com [~]# mysql --user='abc_wpsitesdev' --password='(redacted)' -h localhost abc_wpsitesdev
ERROR 1045 (28000): Access denied for user 'abc_wpsites'@'localhost' (using password: YES)
abc.com [~]# mysql --user='abc_wpsitesfff' --password='(redacted)' -h localhost abc_wpsitesdev
ERROR 1045 (28000): Access denied for user 'abc_wpsites'@'localhost' (using password: YES)

请注意,每次尝试使用用户名仍然会导致尝试通过“abc_wpsites”帐户访问 MySQL。对这里发生的事情有什么想法吗?

<小时/>

另外,我应该提到,我可以通过其他方法使用适当的凭据进行连接(例如通过 MySQL),所以这似乎是我对 MySQL CLI 界面的理解/操作的某种问题。

最佳答案

我不建议以这种方式传递您的登录信息。这意味着您的密码是

  • 在进程列表中可见(某些发行版会对其进行过滤)
  • 它存储在 crontab 或 bash .history 文件中

而是在 script.cnf 文件中创建一个不可读的文件。

内容看起来像

[client]
user=abc_wspitesdev
password=your_password

将命令行调用更改为

mysql --defaults-file=/path/to/script.cnf -h localhost abc_wpsitesdev mysql

编辑

您的其他评论表示您可以作为其他用户进行连接。如果您有此数据库的 root 访问权限,请运行

从mysql.users中选择用户、主机、密码;

将不起作用的与其他起作用的进行比较。

存储的密码将是实际值的哈希值。它们的长度都一样吗?如果明显更长或更短,则可能是密码是使用 4.x 及更早版本中使用的旧密码哈希方法存储的。

您尝试连接的帐户的主机是什么?是“localhost”还是 IP 地址?如果是您的 IP 地址,这可能就是问题所在。由于您的命令行调用正在连接到本地主机,这将告诉它通过unix套接字(也许是/var/lib/mysql/mysql.sock)进行连接。 MySQL 将这些连接与来自 TCP 堆栈的连接区分开来。

如果是这种情况,您也可以在命令行上指定完整(非 127.0.0.1)IP 地址

mysql -u blah -pblah -h 1.2.3.4

关于MySQL在Linux上修改用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8797234/

相关文章:

mysql - 如何将所有数据库表从一个模式复制到同一服务器上的另一个模式?

mysql - 具有多个联接的 JDBC 检索

mysql - 数据库问题错误无法修复

php - 将图像存储在 MySQL BLOB 中

python - 如何在创建表期间在 SQLite 中设置默认日期值

c++ - winelib的优势?

linux - 尽管进行了优化,我如何以编程方式获得可靠的回溯?

java - JPA 和 MySQL 的并发事务

c++ - 在 Linux 上编译外部库

python - 是否可以在开发过程中阻止 Django 创建 .pyc 文件?