原文:
developer.fedoraproject.org/tech/databa…
原文作者:
Adam Samalik
,
FaramosCZ
,
Honza Horak
,
antoninmrkvica
,
ricky grassmuck
MariaDB 是 MySQL 分叉出来的独立社区维护版本,能够完美替代 MySQL 。关于 MariaDB 的详细信息可阅
上游特性介绍页面
,关于 MariaDB 和 MySQL 的主要区别,请阅
兼容性文档
Fedora 提供的 MySQL 版本
MariaDB 是 Fedora 官方推荐的 MySQL 版本。在绝大多数的应用场景下, MariaDB 都能够完美替代 MySQL ——通常情况下,绝大多数
MySQL 文档
也适用于 MariaDB 。
如果的确需要在 fedora 上安装社区版 MySQL ,可以使用
社区版 mysql 软件包( community-mysql )
Fedora 通常只提供最新的稳定版 MariaDB ,如果需要其他版本( fedora 不对这些版本提供支持),可以到维护者提供的
COPR 仓库
去下载。关于当前版本 MariaDB 的信息,可以查阅
上游文档
。在 Fedora 中, MariaDB 的软件包名称为
mariadb
(客户端工具) 和
mariadb-server
(服务 daemon )
如果想要较老版本,可以安装
MariaDB 5.5 软件包合集
或
上游提供的软件包
。
Fedora 提供包含 Galera 补丁的 MariaDB ,包名为
mariadb-galera-server
。
galera
软件包则提供了 wsrep 插件。详细信息见本文末尾的【如何在 Fedora 中安装 MariaDB Galera】。
在 Fedora 上安装 MariaDB
安装 MariaDB 客户端:
$ sudo dnf install mariadb
安装 MariaDB 服务器:
$ sudo dnf install mariadb-server
如果需要用 GUI 连接 MariaDB ,可以安装 phpMyAdmin
:
$ sudo dnf install phpMyAdmin
或安装带有 MariaDB JDBC 插件的 Libre Office Base :
$ sudo dnf install libreoffice-base mariadb-java-client
如果想用 ODBC 连接 MariaDB ,需要安装 unixODBC
和 mariadb-connector-odbc
包:
$ sudo dnf install mariadb-connector-odbc
Fedora 中使用 MariaDB 的基础教程
默认情况下,MariaDB 运行在 3306 端口,并会在本地的 /var/lib/mysql/mysql.sock
创建一个本地 unix socket 。数据默认存储在 /var/lib/mysql
目录中,日志则存储在 /var/log/mariadb/
目录中。如果要修改上述默认目录,需要注意重新配置 SELinux 上下文和 owner 。
安装刚完成时,数据目录是空白的,其将会在第一次启动 MariaDB 时进行初始化。
运行下面的命令来启动 MariaDB :
$ sudo systemctl start mariadb
将 MariaDB 设置为系统启动时自动启动:
$ sudo systemctl enable mariadb
MariaDB 的 root 用户没有默认密码,可以直接连接数据库
mysql -u root
建议运行安全安装助手来使 MariaDB 更安全:
$ sudo mysql_secure_installation
该工具会要求你交互式地回答一些问题。请在此工具中单独设置一个复杂密码,而不要直接用当前系统管理员的密码 —— MySQL 用户 root
的身份认证是独立的。
配置 MariaDB
可以通过编辑 /etc/my.cnf
、 ~/.my.cnf
以及 /etc/my.cnf.d/
下所有 .cnf
文件来实现对 MariaDB 客户端和服务器的配置。详细的配置方法请参考 上游文档 。
为本地开发配置 MariaDB 服务器
当使用 MariaDB 作为存储引擎来开发应用程序时,开发者通常需要一个对特定数据库 scheme 具有完全权限的用户账号。此时需要执行下面的命令来创建这个特定账号和数据库:
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb
$ sudo mysql_secure_installation
... My Account sudo mysql -u root -p
MariaDB [(none)]> create database db1;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> CREATE USER 'valeria'@'localhost' IDENTIFIED BY 'secretpass';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON db1.* TO 'valeria'@'localhost';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
接下来就可以使用该账户通过 MariaDB 命令行工具使用数据库了:
$ mysql -u valeria -p
(如果命令中带了 -p 参数而没有输入密码,程序会要求你单独输入)
在不同的框架或库中,都可以通过刚刚设置的用户名和密码来访问数据库。
如何在开发生产环境的过程中使用 MariaDB
若要在生产环境开发时使用 MariaDB ,开发者需要在启动服务时注意控制风险,这需要:
使用上文中提到过的 mysql_secure_installation
除非确有需要,否则不要接受来自所有地址的连接请求
使用复杂密码
只为应用程序提供恰好够用的权限
默认配置下, MariaDB 是不接受其他电脑的连接请求的。如果想从其他电脑连接 MariaDB ,需要进行下列设置:
开放 3306 端口:
firewall-cmd --permanent --zone=public --add-port=3306/tcp
修改前文中提过的 mysql 配置文件,增加下面的配置项,允许接收来自所有接口的请求(或根据需要配置):
bind-address = 0.0.0.0
其他通用配置
可以通过在 /etc/my.conf.d/
目录下创建配置文件来修改 MariaDB 服务器的配置参数。
下面的例子展示了 /etc/my.conf.d/myconfig.cnf
文件的内容。该文件中包含一些经常被修改的配置选项(用户可以使用任何能满足需求的变量):
max_connections = 20
ft_min_word_len = 3
ft_max_word_len = My Account
innodb_use_native_aio = 0
slow_query_log = 1
slow_query_log_file = "/var/log/mariadb/slowquery.log"
general_log = 1
general_log_file = "/var/log/mariadb/query.log"
修改配置文件后,需要使用 $ sudo systemctl restart mariadb
来重启服务。
在 Fedora 上安装 MariaDB Galera
MariaDB Galera 集群是一个 MariaDB 的多主异步集群。
通过下面的命令安装 MariaDB Galera server 软件包:
$ sudo dnf install mariadb-galera-server galera
MariaDB Galera 使用了多个基础的 MariaDB 软件包,并提供与原 MariaDB 相同的服务名称。因此仍可用下面的命令启动 MariaDB Galera:
$ sudo systemctl start mariadb
获取 MariaDB Docker 容器
$ sudo docker pull fedora/mariadb
通过 Fedora 提供的扩展插件来扩展 MariaDB
MariaDB 连接存储引擎 能让 MariaDB 访问外部的本地或远程数据 (MED) 。若要安装该引擎,运行下列命令:
$ sudo dnf install mariadb-connect-engine
若要安装 Open Query GRAPH 计算引擎 ,运行:
$ sudo dnf install mariadb-oqgraph-engine
将 MariaDB 服务器作为动态链接库使用
在 Fedora 中,MariaDB 服务器也可以以动态库的方式来使用。该库(libmysqld.so
)由 mariadb-embedded
包提供,相应的头文件包则在对应的 devel 包 mariadb-embedded-devel
提供。