考虑:
./mysqladmin -u root -p** '_redacted_'
输出(包括输入密码):
输入密码: Mysqladmin: connect to server at 'localhost' failed错误 '用户'root'@'localhost'(使用密码:YES)拒绝访问'
我该如何解决这个问题?
考虑:
./mysqladmin -u root -p** '_redacted_'
输出(包括输入密码):
输入密码: Mysqladmin: connect to server at 'localhost' failed错误 '用户'root'@'localhost'(使用密码:YES)拒绝访问'
我该如何解决这个问题?
当前回答
有时会在安装时设置默认密码-如文档中所述。可以通过以下命令确认。
sudo grep 'temporary password' /var/log/mysqld.log
其他回答
啊,对我来说什么都没用!我有一台运行MariaDB 5.5.64的CentOS 7.4机器。
我必须这么做,在YUM安装MariaDB之后;
systemctl restart mariadb
mysql_secure_installation
mysql_secure_installation将带您完成许多步骤,包括“设置根密码?”[Y / n]”。只要输入“y”并输入密码。随你怎么回答其他问题。
然后你可以用你的密码,使用
mysql -u root -p
它会存活下来
systemctl restart mariadb
的关键
然后,我检查了/bin/mysql_secure_installation源代码,看看它是如何神奇地改变根密码的,而这里的其他答案都不能。导入位是:
do_query "UPDATE mysql.user SET Password=PASSWORD('$esc_pass') WHERE User='root';"
...上面写着SET Password=…而不是SET authentication_string = PASSWORD....因此,本版本(5.5.64)的正确步骤是:
使用mysql -u root -p登录,使用您已经设置的密码。
或者,停止数据库并启动它:
mysql_safe --skip-grant-tables --skip-networking &
从mysql>提示符:
use mysql;
select host,user,password from user where user = 'root';
(observe your existing passwords for root).
UPDATE mysql.user set Password = PASSWORD('your_new_cleartext_password') where user = 'root' AND host = 'localhost';
select host,user,password from user where user = 'root';
flush privileges;
quit;
停止运行mysqld_safe。重启MariaDB。以root用户登录:mysql -u -p。请使用新密码。
如果您愿意,您可以一次设置所有的根密码。我认为这是明智的:
mysql -u root -p
(login)
use mysql;
select host,user,password from user where user = 'root';
UPDATE mysql.user set Password = PASSWORD('your_new_cleartext_password') where user = 'root';
select host,user,password from user where user = 'root';
flush privileges;
quit;
这将执行更新所有的根密码:即,“localhost”,“127.0.0.1”,和“::1”
将来,当我去RHEL 8或其他什么时候,我会试着记得检查/bin/mysql_secure_installation,看看那些家伙是怎么做的,谁是为这个操作系统配置MariaDB的人。
我这样做是为了在OS x中MySQL的初始设置中设置我的根密码。
sudo sh -c 'echo /usr/local/mysql/bin > /etc/paths.d/mysql'
关闭终端并打开一个新终端。
在Linux中,可以使用以下方法设置根密码。
sudo /usr/local/mysql/support-files/mysql.server stop
sudo mysqld_safe --skip-grant-tables
(sudo mysqld_safe——skip-grant-tables:第一次对我不起作用。但在第二次尝试时,成功了。)
然后登录MySQL:
mysql -u root
FLUSH PRIVILEGES;
现在修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
重新启动MySQL:
sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start
需要检查的一件事是from-host筛选器。默认情况下可能是“localhost”。您正在尝试从远程客户端连接吗?将其更改为“%”。
在我的Debian 10的情况下,错误
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
(好方法)解决了
sudo mysql -u root -p mysql
不好的方法:
mysql -u root -p mysql
根据我的经验,如果你没有sudo,它是行不通的。所以确保你的命令是;
sudo mysql -uroot -p