今天我做了一个登录作为根到Ubuntu 14.04.1 LTS ll
然后是apt-get install mariadb-server
(没有sudo,但作为根)。
用mySQL -h localhost -u root --password=<PW>
我得到了
用户“root”@“localhost”的访问被拒绝(使用密码:是)
我用mySQL -u root -p
登录到数据库,
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<PW>';
FLUSH ALL PRIVILEGES;
但是这并没有帮助。你有什么想法吗?我没有找到类似问题的答案。
9条答案
按热度按时间kxkpmulp1#
**TL;DR:**要以root用户身份访问较新版本的mysql/mariadb,在新安装后,您需要在root shell中(即
sudo mysql -u root
,或mysql -u root
位于由su -
或sudo -i
启动的shell中)刚刚在Ubuntu上做了同样的升级,我遇到了同样的问题。
奇怪的是
我会接受我的密码,并允许我设置它,但我无法通过
mysql
客户端以root
身份登录我不得不开始mariadb
以root用户身份进行访问,而所有其他用户仍然可以正常访问。
查看
mysql.user
表,我注意到root用户的plugin
列被设置为unix_socket
,而其他所有用户的列都被设置为'mysql_native_password'。https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/解释了Unix套接字通过将运行客户端的进程的uid
与mysql.user
表中的用户的uid
进行匹配来启用登录。换句话说,要以root
身份访问mariadb,您必须以超级用户身份登录。果然,重新启动我的mariadb守护进程需要身份验证,我可以作为root登录
或
完成这些之后,我考虑了如何在不执行sudo的情况下访问,而sudo只是运行这些mysql查询的问题
(用你想要的mysql root密码替换
<password>
)。这使得root用户可以使用密码登录。或者运行mysql查询:
将根帐户更改为使用密码登录而不更改密码,但这可能会使您的mysql/mariadb安装没有根密码。
在这两种情况下,你需要重新启动mysql/mariadb:
瞧,我可以通过
mysql -u root -p
从我的个人帐户访问请注意,这样做会降低安全性MariaDB开发人员可能有充分的理由选择这样的root访问方式。
想想看,我很高兴有
sudo mysql -u root -p
,所以我切换回,但我想我会张贴我的解决方案,因为我找不到一个其他地方。q35jwt9p2#
在干净的Ubuntu 16.04 LTS中,localhost 的MariaDB root 登录名从密码样式更改为sudo登录样式...
所以,就这么做吧
由于我们希望使用密码登录,因此请创建另一个用户“user”
在MariaDB控制台中...(您可以使用“sudo mysql -u root”进入MariaDB控制台)
然后在bashshell提示符下,
并且您可以在本地主机上使用“user”和“yourpassword”登录
wd2eg0qa3#
来自超级用户accepted answer:
hsvhsicv4#
请尝试以下命令
按回车键并为mysql/mariadb中的 root 指定新密码。
如果出现类似以下的错误
错误2002(HY 000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器
启用服务
现在,如果您使用
如果您按照问题输入
sudo su
和mysql -u root -p
,现在将权限应用于 rootGRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<password>';
这修复了我在MariaDB中的问题。
祝你好运
ve7v8dk25#
我必须以root身份登录Ubuntu才能访问Mariadb。这可能与“Harden ...”有关,它在您第一次安装时会提示您这样做。因此:
你就可以加入了。
cidc1ykv6#
刷新权限的新命令是:
FLUSH PRIVILEGES
旧命令
FLUSH ALL PRIVILEGES
不再起作用。您将收到类似以下内容的错误:
MariaDB [(none)]> FLUSH ALL PRIVILEGES; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ALL PRIVILEGES' at line 1
希望这对你有帮助:)
jjjwad0x7#
运行mysql_upgrade。
检查一下
说
检查表是否存在_mysql.proxies_priv_。
Access denied for user 'root'@'localhost' while attempting to grant privileges. How do I grant privileges?
vd8tlhqk8#
像Ubuntu这样的系统更喜欢使用auth_socket插件,它会尝试通过比较数据库中的用户名和发出mysql请求的进程来进行认证;它在here中描述
套接字插件检查套接字用户名(操作系统用户名)是否与客户端程序指定的MySQL用户名匹配,并仅在名称匹配时才允许连接。
相反,您可能希望使用mysql_native_password,它将要求用户/密码进行身份验证。
关于实现这一点的方法,我推荐使用this。
yqkkidmi9#
首先关闭终端退出此cmd;
然后运行:
sudo mysql
(不要忘记sudo
,否则MySQL需要您不知道的密码-使用sudo
跳过mysql密码验证)通过以下命令选择
mysql
数据库然后为root用户设置新密码
然后
和
quit
来关闭mysql连接现在您可以运行
sudo mysql_secure_installation
而不会出现任何错误。您必须在此处输入新设置的密码(MyNewPassword@123)