我在Ubuntu 12.04 LTS (Precise穿山甲)上安装了LAMP,然后在phpMyAdmin上设置根密码。我忘记密码了,现在无法登录。当我试图通过终端更改密码时,我得到:
错误2002 (HY000):无法通过套接字连接到本地MySQL服务器 ' / var /运行/ mysqld / mysqld。袜子”(2)
我该如何解决这个问题?我无法打开LAMP,卸载它或重新安装它。
我在Ubuntu 12.04 LTS (Precise穿山甲)上安装了LAMP,然后在phpMyAdmin上设置根密码。我忘记密码了,现在无法登录。当我试图通过终端更改密码时,我得到:
错误2002 (HY000):无法通过套接字连接到本地MySQL服务器 ' / var /运行/ mysqld / mysqld。袜子”(2)
我该如何解决这个问题?我无法打开LAMP,卸载它或重新安装它。
当前回答
适用于CentOS Linux发行版7.3 mysql。Sock文件路径为/var/lib/mysql/mysql.sock
编辑/etc/my.cnf文件并放入下面的条目 这将解决你的问题。
[client]
user=root
password=Passw0rd
port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld]
bind-address=0.0.0.0
在此之后重新启动服务
service mysql restart
其他回答
您缺少创建/var/run/mysqld目录的权限。所以请创建和 给予许可如下。
Mkdir -p /var/run/mysqld Chown mysql:mysql /var/run/mysqld
在我的情况下,似乎我不能真正杀死mysql进程,当我运行
sudo service mysql stop
ps -ef | grep mysql
mysql进程一直在那里,看起来它阻塞了套接字文件,新的mysql进程不能自己创建它。
这很有帮助
cd /var/run
sudo cp mysqld/ mysqld.bc -rf
sudo chown mysql:mysql mysqld.bc/
sudo service mysql stop
sudo cp mysqld.bc/ mysqld -rf
sudo chown mysql:mysql mysqld -R
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
现在我能够登录数据库使用
mysql -u root
然后更新root密码:
UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root';
FLUSH PRIVILEGES;
PS:我在更新根密码时遇到了麻烦,似乎是“auth_socket”插件的问题,所以我必须创建具有完整权限的新用户
insert into user set `Host` = "localhost", `User` = "super", `plugin` = "mysql_native_password", `authentication_string` = NULL, `password_expired` = "N", `password_lifetime` = NULL, `account_locked` = "N", `Select_priv` = "Y",
`Insert_priv` = "Y", `Update_priv` = "Y", `Delete_priv` = "Y", `Create_priv` = "Y", `Drop_priv` = "Y", `Reload_priv` = "Y", `Shutdown_priv` = "Y", `Process_priv` = "Y", `File_priv` = "Y",
`Grant_priv` = "Y", `References_priv` = "Y", `Index_priv` = "Y", `Alter_priv` = "Y", `Show_db_priv` = "Y", `Super_priv` = "Y", `Create_tmp_table_priv` = "Y", `Lock_tables_priv` = "Y",
`Execute_priv` = "Y", `Repl_slave_priv` = "Y", `Repl_client_priv` = "Y", `Create_view_priv` = "Y", `Show_view_priv` = "Y", `Create_routine_priv` = "Y", `Alter_routine_priv` = "Y",
`Create_user_priv` = "Y", `Event_priv` = "Y", `Trigger_priv` = "Y", `Create_tablespace_priv` = "Y";
这将创建一个没有密码的用户“super”,然后你可以连接mysql -u super
在我的情况下,我的问题是,我试图从我的linux终端访问,而不是从我的docker容器与mysql。
我找到了解决办法
在触发命令之前:mysql_secure_installation
步骤1:sudo systemctl stop mariadb 步骤2:sudo systemctl启动mariadb 步骤3:mysql_secure_installation
然后它会询问根密码,你可以简单地按Enter并设置你的新根密码。
而不是使用localhost:
mysql -u myuser -pmypassword -h localhost mydatabase
使用127.0.0.1
mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase
(注意,-p和mpassword之间没有空格)
享受:)