ubuntu apt-get 安装mariadb后进不去
问题
使用 sudo apt-get install mariadb-server
安装 mariadb后,直接键入 mariadb
会使用当前的用户名进行登录,这里提示访问被拒绝
既然用户名不对,那么就使用root来登,提示输入密码直接回车,结果依旧被拒
使用 mysql_secure_installation
重置密码也无效
解决
后面发现,由于安装时使用的是 su 权限,因此 apt 版本的 mariadb 也只认 su。
-
直接
sudo maridb
,提示输入密码,输入当前系统用户密码,回车登陆成功(使用exit;
退出后再次输入sudo mariadb
进入可以免密)
-
使用
sudo mariadb -uroot -p
,提示输入密码,直接回车,登陆成功
原因
unix_socket认证插件允许用户通过本地Unix套接字文件连接到MariaDB的时候使用操作系统的凭证。通俗的讲就是用Linux操作系统的账号,去登录MariaDB/MySQL数据库。
这个功能是在MariaDB 10.4.6版本里添加的,目前也支持在MySQL 8.0.18版本中。
官网说明地址 https://mariadb.com/kb/en/authentication-plugin-unix-socket/
安装插件
apt 安装的 mariadb 自带该插件,也可以手动安装【报错行不通】
INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';
或
INSTALL SONAME 'auth_socket.so';
- 1
- 2
- 3
修改认证方式
下面需要将 auth_socket 改回 native_password 认证方式
使用 mysql 数据库,查看它的表
MariaDB [(none)]> show databases;
MariaDB [(none)]> use mysql;
MariaDB [(mysql)]> show tables;
- 1
- 2
- 3
select * from user
查看表里的内容,然后发现列真是太多了,表格都乱了
修改查询方式,仅显示所需项 select host,user,password,plugin from user;
将上面的方式改为 mysql_native_password
,命令为update user set plugin='mysql_native_password' where user='root';
最后刷新到内存即可 flush privileges;
flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。
接下来,使用exit;
命令退出 mariadb
使用该命令 sudo mysql_secure_installation
重置密码,现在就可以使用与操作系统的root用户不同的密码登陆了。
这里一定要用sudo,否则权限不够。
创建新用户
create user ''<用户名>@'<localhost or %>' identified by '<密码>'
localhost 表示本地,% 表示 本地/远程 均可。
退出命令行,直接输入 mariadb
默认采用当前用户名。但是该方式是无密码的,使用 -p 参数,即可设置密码正常登陆了。
文章来源: blog.csdn.net,作者:福州-司马懿,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/chy555chy/article/details/108831935
- 点赞
- 收藏
- 关注作者
评论(0)