如何使用域中的 root 帐户而不是本地主机在 CentOS 6.3 上登录 MySQL?

Zio*_*uas 4 mysql centos

我不知道我是否会说清楚这个问题,但是我已经在 CentOS 6.3 上使用特定域(f.ex. root@mydomain)上的 root 帐户安装了 MySQL,但是当我尝试登录它时,我'我被要求输入 root@localhost 帐户的密码,我无权访问。如何登录安装在“mydomain”而不是“localhost”上的 MySQL?

我试过使用 bind-address='domain_ip' 编辑 my.cnf,但它没有帮助,它仍然需要 localhost 密码。

use*_*517 7

Mysql 维护它自己的用户和密码信息,这些信息与主要操作系统帐户不同。root@localhost 和 root@yourhost.tld 帐户是 CentOS 上安装的默认管理员帐户。

如果您最近安装了这个 mysql 服务器并且您没有设置密码,那么您应该可以使用空密码访问它

mysql -u root -p
Enter password: (press enter)
Run Code Online (Sandbox Code Playgroud)

或者

mysql -h yourhostname.tld -u root -p
Enter password: (press enter)
Run Code Online (Sandbox Code Playgroud)

如果您可以这样做,那么您应该通过设置密码来保护您的系统

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h yourhostname.tld password 'new-password'
Run Code Online (Sandbox Code Playgroud)

或运行

/usr/bin/mysql_secure_installation
Run Code Online (Sandbox Code Playgroud)

这将为您提供保护系统的各种选项。特别注意

Disallow root login remotely? [Y/n]
Run Code Online (Sandbox Code Playgroud)

通常,root 应该只被允许从 'localhost' 连接。这确保有人无法从网络猜测 root 密码。

但是您从您的问题中似乎想要允许这样做(尽管您可能并不真的这样做)。


如果其他人为您设置了此系统并且他们设置了密码,您应该向他们索要。


如果已设置密码但您无法获取密码,则可以使用以下步骤重置密码,前提是您具有操作系统的 root 访问权限。

service mysqld stop
mysqld_safe --skip-grant-tables &
mysql --user=root mysql
update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
exit;
Run Code Online (Sandbox Code Playgroud)

现在停止mysql

pkill mysql
Run Code Online (Sandbox Code Playgroud)

并重启服务

service mysql start
Run Code Online (Sandbox Code Playgroud)

您应该可以使用您知道的密码登录。