我在 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/
答案3
对于 MySQL 5.7,默认密码会打印在日志中。快速 grep 可以返回它。
grep 'temporary password' /var/log/mysqld.log
参考: https://www.percona.com/blog/2016/05/18/where-is-the-mysql-5-7-root-password/
https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
https://stackoverflow.com/questions/33991228/what-is-the-default-root-pasword-for-mysql-5-7
https://dba.stackexchange.com/questions/127537/setting-root-password-in-fresh-mysql-5-7-installation
答案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