我试图让 MySQL 在我的本地主机上运行。我以前从未遇到过这种情况,但在安装sudo apt-get install mysql-server
时并没有要求我输入初始密码。
在搜索“重置”我的密码并与目录权限作斗争的答案后,我目前处于这种状态:
mysqld_safe 解决方案:
- 重新启动计算机后,
mysql -u root -p
会询问我的密码,输入密码后,它会抱怨ERROR 1698 (28000): Access denied for user 'root'@'localhost'
- 如果我改为尝试
mysql -u root
(无密码),它会说ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
- 如果我运行其他人发布的关于通过 重置密码的建议
mysqld_safe --skip-grant-tables
,那么我在此过程中会遇到一些问题:- 首先我跑
sudo service mysql stop
- 然后
sudo mysql_safe --skip-grant-tables
会说mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
- 如果我这样做
sudo mkdir -p /var/run/mysqld
,我可以解决这个问题sudo chown mysql /var/run/mysqld
- 在此之后,running
mysqld_safe
将与消息一起运行Starting mysqld daemon with databases from /var/lib/mysql
,然后挂起。而Ctrl+C并没有让我摆脱困境。 - 在一个新的终端窗口中,我现在可以实际连接
mysql -u root
并获得mysql>
提示。 - 我可以设置一个新密码,用
use mysql; update user set authentication_string=password('0000') where user='root';flush privileges;
它会告诉我它成功更新了该行的消息Rows matched: 1 Changed: 1 Warnings: 1
- 警告仅指出:
'PASSWORD' is deprecated and will be removed in a future release.
- 毕竟这一切,我回到了第一方:进程仍然挂起,所以我必须重新启动,因为
killall mysqld_safe
说no process found
. 重新启动并输入我的新密码0000
后,我将被拒绝访问。
- 首先我跑
该系统是Linux 4.15.0-48-generic #51-Ubuntu SMP
.
mysqladmin 解决方案
如果我运行mysqladmin -u root password '0000'
(没有sudo
),我得到:
mysqladmin:连接到“localhost”的服务器失败
错误:'拒绝访问用户'root'@'localhost''
如果我用 运行它sudo
,我会得到:
mysqladmin:[警告] 在命令行界面上使用密码可能不安全。
警告:由于密码将以明文形式发送到服务器,请使用 ssl 连接以确保密码安全。
最后一个并没有真正告诉我有关密码更改是否发生的任何事情。它是否被拒绝(因为它是警告,而不是错误,我认为它应该通过),但在任何一种情况下,尝试连接0000
仍然说“访问被拒绝”。
非常感谢任何有关如何解决此问题的建议。