我最近设置了一个 openSUSE 12.2 vm,并选择了 KDE 作为桌面。KDE(4.3)恰好附带了一个名为“akonadi”的应用程序,而该应用程序恰好使用了 mysql。结果是 mysql 似乎预先配置了一个非空的 root 密码。我设置 openSUSE vm 的原因是我为某个软件编写了一个安装脚本,并且希望它在 openSUSE 上运行。在 fedora/rh 上,我可以预期 mysql 会使用空的 root 密码进行安装,然后让用户运行 mysql_secure_installation。在 debian/ubuntu 上,debconf 会让用户在安装 mysql 服务器期间输入 mysql root 密码。但是,我以前可能一直选择 gnome,所以如果我选择 kde,这可能不会起作用。
无论如何,我的问题归结为:真的吗?在为 akonadi 配置 mysql 时,kde 真的设置了非空的 root 密码吗?真的吗?找出它设置的值真的比谷歌搜索更难吗?最后,(低着头)有人能告诉我如何找到它吗?
谢谢!
杰森
答案1
你可以通过以 root 身份启动进程(无需联网)并无密码登录,然后执行更改 root 密码来强制 MySQL/MariaDB 设置其 root 密码ALTER USER
。我读过的大部分内容这里. 程序是轻微地在 MariaDB 上有所不同,但在语法上应该是等效的。
我只需要在 MySQL 5.7.18 Community(在 Fedora 24 上)上执行此操作,因此已知它可以在至少一个系统上运行。
mysqld
通过发送SIGTERM
(例如通过htop
)或从服务管理器关闭它们来停止任何实例(sudo systemctl stop mysqld.service
)启动 MySQL 作为系统root 用户并使用以下命令将其分叉到后台:
$ sudo mysqld --skip-grant-tables --skip-networking --user=root &
现在 MySQL 正在运行(并且极易受到攻击,因此有
--skip-networking
争论),登录到它:$ sudo mysql -u root
加载 MySQL 的用户表,以便我们可以编辑它:
mysql> FLUSH PRIVILEGES;
为 MySQL 的 root 用户设置新密码。确保正确转义所有奇怪的字符。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'correct \'horse\' battery staple'; mysql> exit;
向 MySQL 发送另一个
SIGTERM
:$ sudo kill `cat /var/run/mysqld/mysqld.pid`
再次正常启动MySQL:
$ sudo systemctl start mysqld.service
验证您现在可以使用 MySQL root 用户的密码登录:
$ mysql -u root -p
系统将提示您输入密码,然后瞧!