环境
Debian
安装
安装命令 apt install default-mysql-server
该命令会自动安装 mariadb-client
和 mariadb-server
两个软件包。
配置
使用 mysql_secure_installation
配置 MySQL
设置好 root 账户密码,参考Debian8 安装配置 MySQL5.6配置即可。
这里为了图个省事,直接使用 root 账户(不推荐)
默认情况下 MariaDB 通过本地 MySQL 客户端访问 root 账户不需要密码。
使用
第一次通过外部程序连接数据库就出错了,Access denied for user 'root'@'localhost'
分析
百度一通后,得到的初步结论是【密码有问题?】各种教程介绍各种花式修改密码的办法,乱试了一通后发现根本没卵用。
直到看到了这篇文章《解决MySql ERROR 1698 (28000) 错误:Access denied for user 'root'@'localhost'》,仔细研读后发现 root 用户的 plugin 默认为 auth_socket,看来 MariaDB 应该不推荐直接使用 root 账户。
1、通过命令启动 mysql
, service mysql start
~$ service mysql start
[ ok ] Starting MariaDB database server: mysqld.
2、使用 root
账户登录 mysql
~$ mysql -u root
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 50
Server version: 10.3.18-MariaDB-0+deb10u1 Debian 10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
3、查看一下user表
MariaDB [(none)]> select user, plugin from mysql.user;
+-----------+-------------+
| user | plugin |
+-----------+-------------+
| root | unix_socket |
| user_test | |
+-----------+-------------+
2 rows in set (0.000 sec)
可以看到 root
的账户, plugin
默认值为 unix_socket
,而普通账户 plugin
为空。
具体关于 Authentication Plugin 的说明请查阅官方文档。
结论
不要使用 root 用户,老老实实的创建用户,创建数据库,设置权限就没这么多糟心事了。
'host' 换为 '%' 就可以通过任意ip访问
创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
删除用户
DROP USER 'username'@'host';
创建数据库
CREATE DATABASE db_name;
设置权限
GRANT ALL ON db_name.* TO 'username'@'host';
版权属于:wshon
本文链接:https://blog.wshon.com/2019/05/mysql-access-fail.html
转载时须注明出处及本声明
最新回复