我试图让MySQL在我的本地主机上运行。这以前从未发生过,但是在安装sudo apt-get install mysql-server
时并没有要求我输入初始密码。
在搜索“重置”我的密码并与目录权限进行斗争之后,我目前处于这种状态:
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
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 -u root password '0000'
(没有sudo
),我得到:
mysqladmin:连接到“ localhost”服务器失败
错误:“用户'root'@'localhost'的访问被拒绝
如果我使用sudo
运行它,则会得到:
mysqladmin:[警告]在命令行界面上使用密码可能不安全。
警告:由于密码将以纯文本形式发送到服务器,因此请使用ssl连接以确保密码安全。
关于密码更改是否发生,这最后一个并没有告诉我任何事情;是否拒绝了它(因为这是一个警告,不是错误,我认为应该通过),但是无论哪种情况,尝试与0000
进行连接仍然会显示“访问被拒绝”。
对于如何解决此问题的任何建议,我们深表感谢。
答案 0 :(得分:0)
我并没有直接解决mysql
的问题;但是对我自己来说,可接受的解决方案是切换到其他数据库软件,但它仍然是MySQL系统,它使我开始运行。因此,如果有人陷入无法像我那样工作的现有解决方案的问题,也许这对派上用场并最终再次编写代码非常有用。
我所做的是:
mysql
/etc/mysql
和/var/lib/mysql
(不知道此步骤是否必要)apt clean
,apt autoremove
,apt update
mariadb
mysqld_safe --skip-grant-tables
方法创建具有所有特权的新用户,因为与root
的连接始终会失败PHP + MariaDB现在可以再次使用。