mysql root 密码问题

mysql root 密码问题

我在 Ubuntu 16.04 LTS 上。我的 mysql root 密码是什么?如果我输入

mysql -u root -p

它要求我输入密码:我不知道密码,没有密码也不行。Mysql 是预安装的,所以我没有选择任何 root 密码。如果我尝试再次安装它,

sudo apt-get install mysql-server

它说mysql-server已经是最新版本(5.7.18-0ubuntu0.16.04.1)

有什么帮助或提示吗?谢谢。

答案1

对于新的mysql-sql5.7 如果密码为空,则使用 auth_plugin。

在这种情况下,使用sudo权限登录。

$ sudo mysql -u root -p

登录后,您可以简单地使用它来更新密码。

$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

完整参考检查这里

编辑:也可以使用这个(不带-u root):

$ sudo mysql
$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

答案2

两个选项:

首先是清除 mysql(仅当您还没有数据库时):

使用

apt-get purge mysql-server

清除然后

apt-get install mysql-server

只需重新安装即可。安装时它会要求您输入密码。这是最简单、最快捷的方法,但是如果某些程序(如 phpmyadmin)已经连接到现有的 MySQL,则可能会出现问题,因此我建议您使用

或者执行以下操作:使用以下命令停止 MySQL 服务器

sudo service mysql stop 

然后使用以下方式启动安全模式

sudo /usr/bin/mysqld_safe --skip-grant-tables & 

选择 localhost 作为主机(最后一个命令后不会出现命令提示符,因此Starting mysqld daemon with databases from [...]在消息输入后输入下一个命令)

mysql -h localhost

选择 mysql

USE mysql 

(用您的新密码替换 YOURNEWPASSWORD!)类型

UPDATE mysql.user 
SET authentication_string=PASSWORD('new_password') 
WHERE user='root' AND host='localhost'; 

退出

quit 

然后重启 MySQL

sudo mysqladmin shutdown 
sudo service mysql start

编辑

该错误与您的 MySQL 套接字有关。首先,您需要使用以下命令查找系统上的所有套接字文件:

sudo find / -type s

你的插座应该类似于这个

/var/lib/mysql/mysql.sock

(重要的是/mysql.sock部分)

找到打开套接字的位置后,将以下行添加或编辑到您的

/etc/my.cnf 

文件与套接字文件的路径:

[mysqld]

一开始

socket=/path/to/your/socket/

位于文件的最末端。

现在再次尝试 2. 选项。如果不行,请继续此解释。

如果这不能解决您的问题,则某些内容会覆盖 my.cnf 位置,这将导致套接字在 my.cnf 文件指示的位置找不到。然后,当您尝试运行 mysql 命令行客户端时,它将读取 my.cnf 以查找套接字,但找不到它,因为它偏离了服务器创建套接字的位置。因此,除非您关心套接字所在的位置,否则只需更改 my.cnf 以匹配即可。

要解决这个问题,请先关闭该mysqld进程

pkill -9 mysqld

完成此操作后,您可能需要在 /var/run/mysqld/ 中查找 pid 文件并将其删除

确保套接字上的权限使得任何运行 mysqld 的用户都可以对其进行读取/写入。一个简单的测试是将其开放为完全读取/写入,看看它是否仍然有效:

chmod 755 /var/run/mysqld/mysqld.sock

资料来源:

https://dev.mysql.com/doc/refman/5.7/en/mysql-commands.html

https://ubuntu.flowconsult.at/en/mysql-set-change-reset-root-password/

https://stackoverflow.com/questions/11990708/error-cant-connect-to-local-mysql-server-through-socket-var-run-mysqld-mysq

答案3

答案4

UBUNTU 16.04 和 MYSQL 5.7.20

我发现 ADDB 的说明并不是很有帮助。搜索后,我发现了以下内容(对选项 2 进行了小幅重写):

sudo /etc/init.d/mysql stop
    sudo mkdir /var/run/mysqld/
    sudo chown mysql /var/run/mysqld/
    sudo mysqld_safe --skip-grant-tables &
    mysql -uroot
    use mysql;
    update user set authentication_string=PASSWORD("NEW_PASSWORD_GOES_HERE") where User='root';
    flush privileges;
    quit;
    sudo /etc/init.d/mysql stop
    sudo /etc/init.d/mysql start    

参考:http://rricketts.com/reset-root-password-mysql-5-7-ubuntu-16-04-lts/

我喜欢的方法:

我使用了 Mysql 用户“debian-sys-maint”(相当于 root 用户)。密码可以在 /etc/mysql/debian.cnf 中找到。以此用户身份登录 Mysql 后,更改任何 Mysql 用户的密码。

USE mysql
SELECT root@localhost;
ALTER USER user IDENTIFIED BY 'auth_string';
ALTER USER 'Name_of_user_to_be_modified'@'Hostname (ie:localhost)' IDENTIFIED BY 'NEW_PASSWORD';
flush privileges;
exit;

参考: https://serverfault.com/questions/9948/what-is-the-debian-sys-maint-mysql-user-and-more

相关内容