如何在Ubuntu 18.04上安装和使用MariaDB
MariaDB数据库服务器是一个开放源代码服务器,它是MySQL的分支和直接替代品。
现在,它是当今增长最快的开源数据库服务器。
多年来,MySQL是所有Linux系统的数据库服务器之王。
现在,MariaDB是继MySQL当前的母之后的所有Linux系统的数据库服务器之王,Oracle对许可条款进行了一些更改,这激怒了开源社区中的许多人。
如今,MariaDB已成为大多数Linux发行版(如果不是全部)上的默认数据库服务器。
对于那些想在Ubuntu 18.04 LTS上测试MariaDB的人,以下步骤将带我们入门。
第1步-在Ubuntu 18.04上安装MariaDB数据库服务器
仅需一个命令行即可安装MariaDB数据库服务器,为此,请运行以下命令。
首先,运行以下命令以更新Ubuntu 18.04计算机。
sudo apt-get update
接下来,运行以下命令以安装MariaDB服务器和客户端。
sudo apt-get install mariadb-server mariadb-client
安装后,可以使用以下命令停止,重新启动,启动并使MariaDB服务始终在服务器引导时启动。
sudo systemctl stop mariadb.service sudo systemctl restart mariadb.service sudo systemctl start mariadb.service sudo systemctl enable mariadb.service
之后,运行以下命令以通过创建root用户密码并删除测试数据库来保护MariaDB服务器。
sudo mysql_secure_installation
出现提示时,请按照教程回答以下问题。
- 输入root的当前密码(不输入密码):只需按Enter
- 设置root密码? [是/否]:是
- 新密码:输入密码
- 重新输入新密码:重复密码
- 删除匿名用户? [是/否]:是
- 禁止远程root登录? [是/否]:是
- 删除测试数据库并访问它? [是/否]:是
- 现在重新加载特权表? [是/否]:是
完成后重新启动MariaDB服务器。
sudo systemctl restart mariadb.service
要验证MariaDB版本,请运行以下命令:
mysql --version output mysql Ver 15.1 Distrib 10.1.29-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
第2步-配置MariaDB数据库服务器
现在已经安装了MariaDB服务器,默认配置文件位于'/etc/mysql/mariadb.config.d/50-server.cnf',我们可以其中输入config指令来优化和增强数据库服务器的性能。
我们要查找的大多数设置都将在此文件中。
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
在上面的文件中进行所有所需的更改,然后保存'CTRL + x',然后重新启动服务器。
sudo systemctl restart mariadb.service
MariaDB管理命令
现在,我们将讨论一些有用的MariaDB管理命令。
这些是一些非常基本的命令,可开始使用MariaDB;由于Mariadb仅是MySQL的分支版本,因此它们也可以与MySQL一起使用。
1)检查MariaDB安装版本
要检查数据库安装的当前版本,请在终端中键入以下命令:
$mysql --version
我们还可以运行下面提到的命令以获取有关版本的详细视图。
$sudo mysqladmin -u root version
2)登录MariaDB
要登录MariaDB服务器,请运行
$sudo mysql -u root -p
&然后输入密码以登录会话。
3)显示所有数据库
要显示MariaDB当前拥有的所有数据库,请运行以下命令:
MariaDB [()]> show databases;
4)创建新数据库
要在mariadb中创建新数据库,请运行以下命令:
MariaDB [()]> CREATE DATABASE store;
其中“ store”是新数据库的名称。
5)删除数据库
要删除数据库,请运行以下命令:
MariaDB [()]> DROP DATABASE store;
6)创建新用户
要为数据库创建新用户,请运行以下命令:
MariaDB [()]> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'pass123';
7)向用户授予数据库访问权限
要为单个数据库提供对“ testuser”的访问,请运行以下命令:
MariaDB [()]> GRANT ALL PRIVILEGES ON store.* to 'testuser'@'localhost';
这将为用户'testuser'提供对名为'store'的数据库的完整访问。
我们还可以将SELECT,INSERT,DELETE权限授予'testuser'。
要提供对所有数据库的访问权限,请将“ store”替换为“ *”,即
MariaDB [()]> GRANT ALL PRIVILEGES ON *.* to 'testuser'@'localhost';
8)创建数据库的备份/转储
第一个键入“ quit”退出mariadb。
要创建单个数据库,请在终端窗口中运行以下命令,
$sudo mysqldump store > db_backup.sql
要在单个命令中创建多个数据库的备份,
$mysqldump --databases database_one database_two > two_databases.sql
在上面的代码中,database_one是要备份的第一个数据库的名称,database_two是第二个要备份的数据库的名称。
要在单个命令中创建所有数据库的转储,
$sudo mysqldump --all-databases > all_databases.sql
在上面的代码中,将备份服务器上的所有数据库。
9)从转储还原数据库
要从转储中还原数据库,请运行
$sudo mysql store < db_backup.sql
在上面的代码中,“ store”是要还原的数据库的名称,“ db_backup.sql”是要还原的备份文件的名称。
如果试图从所有数据库的转储中还原单个数据库,则必须让mysql像这样:
mysql --one-database store < all_databases.sql
10)在MariaDB中更改用户密码
如果要使用密码“ newpassword”更新名为“ testuser”的用户,则可以在MariaDB中运行以下“ SET PASSWORD”语句:
$mysql -u root -p
MariaDB [()]> SET PASSWORD FOR 'testuser'@'localhost' = PASSWORD('newpassword');
然后按“ Ctrl + d”退出会话。
在下面的最终运行命令中:
$sudo systemctl restart mariadb.service
11)在MariaDB表中创建表
我们将数据库命名为“商店”,因此现在让我们使用此数据库创建一个表,该表描述在商店中找到的产品。
首先选择我们要使用的数据库,在我们的文章中是'store':
MariaDB [()]> USE store;
MariaDB [(store)]> CREATE TABLE IF NOT EXISTS products ( product_id int(5) NOT NULL AUTO_INCREMENT, kind varchar(50) DEFAULT NULL, added_date DATE DEFAULT NULL, size varchar(20) DEFAULT NULL, origin varchar(250) DEFAULT NULL, PRIMARY KEY(product_id));
output Query OK, 0 rows affected (0.03 sec)
要查看我们已经完成了什么,请使用以下命令来打印出新表的列:
show columns in products;
结果使我们对定义列所需的字段有一些了解。
表创建命令中的每个列描述都用逗号分隔,并遵循以下约定:
Column_Name Data_Type[(size_of_data)] [NULL or NOT NULL] [DEFAULT default_value] [AUTO_INCREMENT]
product_id int(5) NOT NULL AUTO_INCREMENT
这些是每个列定义的值:
- 列名称:描述要分配的属性。例如,第一列称为“ product_id”,因为它将保留与每个产品产品关联的唯一ID号。
- 数据类型:指定列将保存的数据类型。可以是MySQL的任何数据类型。例如,“ int”指定仅接受整数值,而“ varchar”用于保存字符串值。
- Null:定义null是否为该字段的有效值。可以为“ null”或者“ not null”。
- 默认值:设置所有未指定值的新创建记录的初始值。关键字“ default”后跟该值。
- auto_increment:MySQL将在内部处理用此选项标记的任何列的顺序编号,以便为每个记录提供唯一的值。
最后,在关闭列声明之前,需要通过键入“ PRIMARY KEY(columns_to_be_primary_keys)”指定要用作主键的列。
我们将“ product_id”列用作主键,因为“ auto_increment”选项可确保该值唯一,这是主键的要求。
12)从MariaDB表中删除表
要删除表,我们可以使用以下语法:
MariaDB [()]> DROP TABLE table_name;
使用此命令时要非常小心,因为一旦删除了表,内部的数据将无法恢复。
首先,让我们查看当前表,以便我们可以确定“显示表”命令的外观:
MariaDB [(store)]> SHOW tables;
让我们删除产品表:
MariaDB [(store)]> DROP TABLE products;
现在,再次检查“存储”表列表:
MariaDB [(store)]> SHOW tables;
output Empty set (0.00 sec)
“存储”数据库中没有任何表,因此操作成功。
13)将数据插入MariaDB表
让我们在表中插入一条记录。
为此,我们将使用以下语法:
MariaDB [()]> INSERT INTO table_name (field1, field2, ...) VALUES (value1, value2, ...);
每个字符串值都必须放在引号中。
每个设置了“ auto_increment”的列都不需要一个值,因为数据库将为其提供下一个序号。
我们可以在商店产品表中添加一行,如下所示:
MariaDB [(store)]> INSERT INTO products (kind, added_date, size, origin) VALUES ("T-Shirt", Now(), "max", "EGYPT");
我们使用了一个称为“ Now()”的特殊函数,该函数为date列填充了当前日期。
要查看信息,请查询表。
星号(*)是匹配所有内容的特殊通配符。
此查询选择产品表中的所有内容:
MariaDB [(store)]> SELECT * FROM products;