环境

Debian

安装

安装命令 apt install default-mysql-server
该命令会自动安装 mariadb-clientmariadb-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';