Debian 9 使用 MariaDB 彻底代替了 MySQL。因此在配置方面,相比之前版本有很多的不同。本文记录了我在 Debian 9 中配置 MariaDB 的一些有用的信息。
文章假定你是 root。
安装 MariaDB
安装 MariaDB 仍旧可以使用下面的命令,相比使用 mariadb-server,使用 mysql-server 能够保证对 MySQL 的兼容性。
apt install mysql-server
因为 Debain 9 源内的 MariaDB 10.0 使用了 UNIX 套接字认证,所以在全新安装 MariaDB 的过程中,不再有 MySQL root 密码的配置窗口。
关于本部分的详细内容参阅:
提供远程访问权限
这部分需要两个步骤,修改服务监听地址 和 授权数据库 。
修改服务监听地址
不再是修改 my.cnf 了。这次,你需要修改的是这个文件:
/etc/mysql/mariadb.conf.d/50-server.cnf
修改的内容一样,在 [mysqld] 区块下,修改 bind-address 的值。下面的一段实例,是允许任意IP地址连线数据库:
[mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 0.0.0.0
授权数据库
你需要授予数据库远程访问的权限。首先使用
mariadb
来进入 MariaDB 命令行。只要你是 Linux 的 root,登入 MariaDB 不需要密码。
接下来,给 MariaDB 的 root 用户授予远程访问权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
其中,192.168.100.% 指允许远程登陆的 IP,% 为通配符。
别急着退出 MariaDB 命令行,还有一步事情要做:
修改 MariaDB 的 root 密码
接着上步骤,执行下面的语句,一行一回车:
use mysql UPDATE user SET Password = password('新密码') WHERE User = 'root'; flush privileges;
使用原生 MySQL 认证
因为默认使用了 UNIX SOCKET 认证,有些 phpMyAdmin 在登入时会发生 “Access Denied” 错误。我们可以更改 UNIX SOCKET 认证为原生 MySQL 认证。
接着上面执行:
update mysql.user set plugin = 'mysql_native_password' where User='root'; flush privileges; exit
最后,重启一下数据库即可
systemctl restart mariadb.service
其他有用的信息
- 忘记了 MariaDB 的 root 密码:http://www.cnblogs.com/Richard-xie/p/4205630.html
- Debian 9 中 内置的 MariaDB 完整变更信息:https://mariadb.com/kb/en/library/moving-from-mysql-to-mariadb-in-debian-9/