前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Debian 9上设置MariaDB

如何在Debian 9上设置MariaDB

作者头像
Techeek
发布2018-09-19 10:14:22
1.8K0
发布2018-09-19 10:14:22
举报
文章被收录于专栏:云计算云计算

什么是MariaDB?

MariaDB是MySQL的直接替代品。它致力于成为寻求强大,可扩展且可靠的SQL Server的数据库专业人员的合理选择。本指南将帮助初学者在Debian 9(Stretch)上安装和配置MariaDB。

注意: 本指南中所需的步骤需要root权限。请务必root使用sudo前缀执行以下步骤。有关权限的更多信息,请参阅我们的用户和组指南。

安装MariaDB

在本节中,您将安装MariaDB并设置MariaDB root用户的密码。MariaDB维护一个shell脚本,该脚本自动设置必要的软件包存储库。

  1. 更新系统并安装依赖项: apt update && apt upgrade apt install dirmngr
  2. 添加MariaDB签名密钥: apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
  3. 下载并执行脚本: curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
  4. 更新您的来源列表: apt update
  5. 安装MariaDB: apt install mariadb-server 系统将提示您为MariaDB root用户设置密码:
在MariaDB安装期间设置root的密码
在MariaDB安装期间设置root的密码

安装完成后,Debian将启动MariaDB服务器,并将服务设置为在重启时自动启动。

使用MariaDB

在本节中,您将学习如何连接到MariaDB并执行基本的SQL命令。

  • 与MariaDB交互的标准工具是MySQL客户端。要开始使用,请发出以下命令以root用户身份连接到MariaDB: mysql -u root -p 出现提示时,输入安装MariaDB时设置的root密码。你会看到如下输出: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 30 Server version: 5.5.37-MariaDB-1~wheezy-log mariadb.org binary distribution Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> 请注意(none)MariaDB提示中的文本。它将用于显示当前工作数据库。由于您尚未选择任何数据库,因此显示为(none)
  • 创建一个示例数据库,以填充样本数据。使用以下命令创建名为testdb的数据库,该数据库由新用户testuser拥有。这些命令还为新用户设置密码secretpassword
代码语言:javascript
复制
CREATE DATABASE testdb;
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON testdb.* TO testuser@localhost;
FLUSH PRIVILEGES;
quit

最后一行从MariaDB注销root用户。

  • testuser身份登录MariaDB : mysql -u testuser -p
  • 使用数据库testdb: USE testdb;
  • 数据库由多个组成。创建一个新表并使用示例数据填充它:
代码语言:javascript
复制
CREATE TABLE products (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), price DECIMAL(6,2));
INSERT INTO products (name, price) VALUES ('MacBook Pro', 1600.0);
INSERT INTO products (name, price) VALUES ('Dell', 850.0);
INSERT INTO products (name, price) VALUES ('Acer', 775.0);
  • 验证是否已插入新数据: SELECT * FROM products; 其中应显示此输出: +----+-------------+---------+ | id | name | price | +----+-------------+---------+ | 1 | MacBook Pro | 1600.00 | | 2 | Dell | 850.00 | | 3 | Acer | 775.00 | +----+-------------+---------+ 3 rows in set (0.00 sec)
  • 输入以下命令退出MariaDB客户端: quit

有关SQL命令的更多信息,请参阅MariaDB知识库中的SQL命令页面。要从客户端查看MariaDB的命令列表,请键入:

代码语言:javascript
复制
\h

输出:

代码语言:javascript
复制
MariaDB [(none)]> \h

General information about MariaDB can be found at
http://mariadb.org

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.

For server side help, type 'help contents'

配置MariaDB

要配置MariaDB以您希望的方式运行,请编辑该/etc/mysql/my.cnf文件。此文件控制大多数服务器系统变量,您通常希望将其保留为默认设置。

无论何时进行更改/etc/mysql/my.cnf,请通过发出以下命令重新启动服务器:

代码语言:javascript
复制
service mysql restart

安全MariaDB服务器

MariaDB建议您通过执行以下命令来保护安装:

代码语言:javascript
复制
mysql_secure_installation

系统将要求您更改root密码,删除匿名用户,禁用localhost之外的root登录,并删除测试数据库。对于所有问题,建议您回答Y.

远程用户连接

本节将演示如何允许先前创建的用户testuser远程连接到MariaDB(默认情况下,MariaDB将仅允许来自localhost的连接)。

警告将MariaDB服务器打开到互联网会降低安全性。如果需要从localhost以外的其他位置进行连接,请确保实施仅允许来自特定IP地址的连接的防火墙规则。

  1. 以root身份登录MariaDB: mysql -u root -p
  2. 允许testuser从远程主机连接: GRANT ALL PRIVILEGES ON testdb.* TO testuser@'%' IDENTIFIED BY 'secretpassword'; FLUSH PRIVILEGES; quit
  3. 配置MariaDB以侦听所有网络接口。打开/etc/mysql/my.cnf文件并编辑bind-address变量以侦听所有网络接口: /etc/mysql/my.cnf1 bind-address = 0.0.0.0
  4. 重启服务器: service mysql restart
  5. 测试从本地计算机到MariaDB服务器的连接,将testuser替换为您的用户名,将example.com替换为您的域或IP地址: mysql -u testuser -h example.com -p 如果登录成功,您应该看到MariaDB欢迎消息和shell提示符。

调整MariaDB

MySQL Tuner是一个有用的工具,它连接到正在运行的MariaDB实例,并根据工作负载提供配置建议。在运行调谐器之前,您应该让MariaDB实例运行至少24小时。实例运行的时间越长,调谐器提供的建议就越好。

  1. 通过发出以下命令安装MySQL Tuner: apt install mysqltuner
  2. 使用以下命令运行MySQL调谐器: mysqltuner

重置MariaDB的Root密码

如果您忘记了root密码,请按以下步骤重置密码:

  1. 停止MariaDB服务器: systemctl restart mysql
  2. 使用该skip-grant-tables设置启动服务器,以便您可以在没有密码的情况下登录MariaDB: mysqld_safe --skip-grant-tables --skip_networking &
  3. 现在,您可以在没有密码的情况下以root身份连接到MariaDB服务器: mysql -u root
  4. 在MariaDB客户端中,发出以下命令以重置root用户的密码并注销: FLUSH PRIVILEGES; USE mysql; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; quit
  5. 重启MariaDB服务器: service mysql restart
  6. 使用新密码连接到MariaDB服务器: mysql -u root -p

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

更多教程请前往腾讯云+社区学习更多知识。

参考文献:《https://www.linode.com/docs/databases/mariadb/mariadb-setup-debian/

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是MariaDB?
  • 安装MariaDB
  • 使用MariaDB
  • 配置MariaDB
  • 安全MariaDB服务器
  • 远程用户连接
  • 调整MariaDB
  • 重置MariaDB的Root密码
  • 更多信息
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档