首先,我创建一个数据库目录:
$ mysql_install_db --datadir=./foo
然后,我启动 mysql 守护进程:
$ mysqld --port=5555 --datadir=./foo &
它启动正常,我可以使用 Navicat 等连接到它。我尝试从 shell 连接:
$ mysql --user=root --port=5555 --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
该怎么办?我还尝试先更改 root 用户的密码:
$ mysqladmin -u root -P 5555 password foo
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
再次,通过独立的 SQL 应用程序(例如 Navicat)连接工作非常顺利。
答案1
我知道有两种方法可以使用空密码登录帐户。第一种方法是直接省略密码选项。
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 163714
Server version: 5.6.38 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
另一种方法是指定-p
选项,然后在出现提示时按回车键。
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 163719
Server version: 5.6.38 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
答案2
在 MySQL 中,用户帐户包括您连接的主机。因此,root@localhost
和[email protected]
是不同的用户,可以有不同的密码。它们中的任何一个也可以不存在。
尝试此查询并检查您的根用户是否有不同的密码。
SELECT user, host, password FROM mysql.user WHERE user = 'root';
如果他们这样做了,请使用任何可行的方法登录并将用户密码更改root@localhost
为您想要的密码。(空字符串表示没有密码,但是没有密码,特别是对于特权用户,通常被认为是一个坏主意。)
答案3
诀窍如下:
$ mysqld --port=5555 --datadir=./foo --socket=./sock &
然后后来:
$ mysql --socket=./sock --user=root --port=5555
工作正常。