我刚刚通过yum安装了mysql,而操作系统fedora为我安装了mariadb。我知道mariadb是mysql的新分支,但我不明白为什么它不要求我设置密码。我尝试使用123456,以此类推,但失败了。我的fedora是新的,这是第一次安装mysql / mariadb。我该怎么办?
Answers:
从https://mariadb.com/kb/en/mysql_secure_installation/:
为了登录MariaDB进行安全保护,我们需要root用户的当前密码。如果您刚刚安装了MariaDB,但尚未设置root密码,那么该密码将为空,因此只需在此处按Enter。
密码为空
我想这就是你的答案。
我有同样的问题。的确密码是空的,但即使如此,也会显示错误消息。解决方案只是使用“ sudo”,所以
$ sudo mysql
将打开mysql工具
为了保护数据库,应该再次使用sudo。
$ sudo mysql_secure_installation
mariadb默认使用UNIX_SOCKET插件来验证用户root。https://mariadb.com/kb/zh-CN/mariadb/unix_socket-authentication-plugin/
“因为他已经向操作系统标识了自己,所以他不需要为数据库再次这样做”
因此,您需要以unix上的root用户身份登录才能以mysql / mariadb中的root用户身份登录:
sudo mysql
如果要从普通的unix用户使用root登录,则可以禁用root身份验证插件。
预先可以使用mysql_secure_installation设置root密码(默认密码为空),然后让每个用户使用以下命令进行root身份验证:
shell$ sudo mysql -u root
[mysql] use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;
[mysql] \q
默认密码为空。更准确地说,您甚至不需要密码即可在本地主机上以root用户身份登录。您只需要成为root。但是,如果您需要首次设置密码(如果允许远程访问root用户),则需要使用:
sudo mysql_secure_installation
输入空密码,然后按照说明进行操作。
您遇到的问题是,当您尝试以root用户身份从本地计算机登录时,需要成为root用户。
在Linux上:仅当用户询问根目录时,mariadb才会在套接字(localhost)上作为根接受连接。这意味着即使您尝试
mysql -u root -p
并具有正确的密码,您将被拒绝访问。一样
mysql_secure_installation
Mariadb将始终拒绝密码,因为当前用户不是root用户。因此,您需要使用sudo(或作为您计算机上的root用户)来调用它们。所以在本地,您只想使用:
sudo mysql
和
sudo mysql_secure_installation
从mysql迁移到mariadb时,我花了我很多时间才能解决。
Lucups,Floris是对的,但是您评论说这并不能解决您的问题。我遇到了相同的症状,其中mysql(mariadb)将不接受应接受的空白密码,并且'/ var / lib / mysql'不存在。
我发现此Moonpoint.com页面是按需显示的。也许像我一样,您尝试启动mysqld服务而不是mariadb服务。尝试:
systemctl start mariadb.service
systemctl status mysqld service
依次为:
mysql_secure_installation
在安装mysql mariadb 10.3之后出现了相同的问题。密码不是NULL,因此仅按ENTER对我不起作用。所以最后不得不更改密码。我从这里按照指示进行。简而言之 停止服务器
sudo systemctl stop mariadb.service
通过启动数据库服务器并跳过联网和权限表,通过后门获得对服务器的访问权限。
sudo mysqld_safe --skip-grant-tables --skip-networking &
以root身份登录
sudo mysql -u root
然后更改服务器密码
use mysql;
update user set password=PASSWORD("new_password_here") where User='root';
请注意,在MySQL 5.7之后,删除了mysql.user表字段中的password字段,现在该字段名称为'authentication_string'。因此,请根据mysql版本使用适当的表名。最终保存更改并重新启动服务器
flush privileges;
sudo systemctl stop mariadb.service
sudo systemctl start mariadb.service
UPDATE user SET plugin='' WHERE user = 'root';
-默认的“插件”值“unix_socket”,它通过Unix套接字使根只能登录。
如果您的数据库安装正确并且输入了错误的密码,则抛出的错误将是:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
以下错误表明您尚未完全启动/安装数据库。您的命令无法找到数据库实例并与之对话。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
好的做法是在全新安装后更改密码
$ sudo service mysql stop
$ mysqld_safe --skip-grant-tables &
$ sudo service mysql start
$ sudo mysql -u root
MariaDB [(none)]> use mysql;
MariaDB [mysql]> update user set password=PASSWORD("snafu8") where User='root';
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> exit;
$ sudo service mysql restart
要么
mysqladmin -u root password 'enter password here'
我相信我从这里找到了正确的答案。
因此,总的说来:
用户: root
密码: 密码
那是通过Wnmp版本安装的版本10.0.15-MariaDB 。Windows 7 x86上的2.1.5.0
Mariadb的默认密码为空。
$ mysql -u root -p
Enter Password: <--- press enter
对我来说password = admin
,工作。我安装了它用pacman
,拱门(Manjaro KDE)。
注意:作为Amarok的依赖项,已经安装了MariaDB 。
只需将您当前的登录用户切换为root用户,然后无需密码即可登录mysql -uroot
我遇到了同样的问题,所有解决方案均无效。然后,我在stackexchange dba中碰到了一个导致该链接的答案。所以这就是我所做的:
sudo mysqld_safe --skip-grant-tables --skip-networking &
sudo mysql -uroot
mysql控制台ALTER USER root@localhost identified via unix_socket;
和 flush privileges;
连续允许无密码的登录如果要设置密码,则需要再执行一步,即正在运行,ALTER USER root@localhost IDENTIFIED VIA mysql_native_password;
然后SET PASSWORD = PASSWORD('YourPasswordHere');
连续。
更新
最近面对这个问题,这是我如何使用最新版本解决此问题,但在此之前有一些背景知识。以root身份运行时,Mariadb不需要密码。因此,首先将其作为根运行。然后,一旦进入Mariadb控制台,请在此处更改密码。如果您满意以管理员身份运行它,则可以继续这样做,但是我发现这很麻烦,尤其是因为我不能将其与DB Admin Tools一起使用。TL; DR这是我在Mac上的操作方式(对于* nix系统应该是类似的)
sudo mariadb-secure-installation
然后按照屏幕上的说明进行操作!
希望这会对某人有所帮助,并为以后的问题提供参考