标签 MySQL 下的文章

我们都知道在 Linux 中使用 uptime 命令的目的。它用于检查 Linux 系统的正常运行时间以及系统上次启动以来运行的时间。

而 Linux 管理员的工作是保持系统正常运行。

如果要检查 Linux 上的其他服务(例如 Apache、MySQL、MariaDB、sftp 等)运行了多长时间,该怎么做?

每个服务都有自己的命令来检查服务的正常运行时间。但是你也可以为此使用其他命令。

方法 1:如何使用 ps 命令在 Linux 上检查 MySQL/MariaDB 数据库的正常运行时间

ps 命令的意思是 进程状态 process status 。这是最基本的命令之一,它显示了系统正在运行的进程的详细信息。

为此,你首先需要使用 pidof 命令查找 MySQL/MariaDB 的 PID。

# pidof mysqld | cut -d" " -f1

2412

获取 MySQL/MariaDB 的 PID 后,请在 ps 命令中使用 --etime 选项获得正常运行时间。

  • --etime:自进程启动以来经过的时间,形式为 [[DD-]hh:]mm:ss
# ps -p 2412 -o etime

   ELAPSED
2-08:49:30

或者,在 ps 命令中使用 --lstart 选项来获取指定 PID 的正常运行时间。

# ps -p 2412 -o lstart

                STARTED
Sat May 2 03:02:15 2020

MySQL/MariaDB 进程已经运行了 2 天 03 小时 02 分 15 秒。

方法 2:如何使用 systemctl 命令在 Linux 上检查 MySQL/MariaDB 数据库的正常运行时间

systemctl 命令用于控制 systemd 系统和服务管理器。

systemd 是新的初始化系统和系统管理器,现在大多数 Linux 发行版都淘汰了传统的 SysVinit 管理器而采用了 systemd。

# systemctl status mariadb
或者
# systemctl status mysql

● mariadb.service - MariaDB 10.1.44 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor     preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Sat 2020-05-02 03:02:18 UTC; 2 days ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 2448 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 2388 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=/usr/bin/galera_recovery; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
  Process: 2386 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
 Main PID: 2412 (mysqld)
   Status: "Taking your SQL requests now…"
   CGroup: /system.slice/mariadb.service
           └─2412 /usr/sbin/mysqld

May 03 21:41:26 ns2.2daygeek.com mysqld[2412]: 2020-05-03 21:41:26 140328136861440 [Warning] Host name '1.1.1.1' could not be resolved: … not known
May 04 02:00:46 ns2.2daygeek.com mysqld[2412]: 2020-05-04 2:00:46 140328436418304 [Warning] IP address '1.1.1.1' has been resolved to the host name '2…ss itself.
May 04 03:01:31 ns2.2daygeek.com mysqld[2412]: 2020-05-04 3:01:31 140328436111104 [Warning] IP address '1.1.1.1' could not be resolved: Temporary fai…resolution
May 04 04:03:06 ns2.2daygeek.com mysqld[2412]: 2020-05-04 4:03:06 140328136861440 [Warning] IP address '1.1.1.1' could not be resolved: Name or ser… not known
May 04 07:23:54 ns2.2daygeek.com mysqld[2412]: 2020-05-04 7:23:54 140328435189504 [Warning] IP address '1.1.1.1' could not be resolved: Name or service not known
May 04 08:03:31 ns2.2daygeek.com mysqld[2412]: 2020-05-04 8:03:31 140328436418304 [Warning] IP address '1.1.1.1' could not be resolved: Name or service not known
May 04 08:25:56 ns2.2daygeek.com mysqld[2412]: 2020-05-04 8:25:56 140328135325440 [Warning] IP address '1.1.1.1' could not be resolved: Name or service not known
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
Hint: Some lines were ellipsized, use -l to show in full.

方法 3:如何使用 MySQLAdmin 命令在 Linux 上检查 MySQL/MariaDB 数据库的正常运行时间

MySQLAdmin 是安装 MySQL 软件包时安装的 MySQL 服务器命令行程序。

MySQLAdmin 客户端允许你在 MySQL 服务器上执行一些基本的管理功能。

它用于创建数据库、删除数据库、设置 root 密码、更改 root 密码、检查 MySQL 状态、验证 MySQL 功能、监视 mysql 进程以及验证服务器的配置。

# mysqladmin -u root -pPassword version

mysqladmin Ver 8.42 Distrib 5.7.27, for Linux on x86_64
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version 5.7.27
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 1 day 10 hours 44 min 13 sec

via: https://www.2daygeek.com/check-mysql-mariadb-database-server-uptime-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本教程教你如何在基于 Ubuntu 的 Linux 发行版上安装 MySQL。对于首次使用的用户,你将会学习到如何验证你的安装和第一次怎样去连接 MySQL。

MySQL 是一个典型的数据库管理系统。它被用于许多技术栈中,包括流行的 LAMP) (Linux、Apache、MySQL、PHP)技术栈。它已经被证实了其稳定性。另一个让 MySQL 受欢迎的原因是它是开源的。

MySQL 是关系型数据库(基本上是表格数据)。以这种方式它很容易去存储、组织和访问数据。它使用SQL(结构化查询语言)来管理数据。

这这篇文章中,我将向你展示如何在 Ubuntu 18.04 安装和使用 MySQL 8.0。让我们一起来看看吧!

在 Ubuntu 上安装 MySQL

我将会介绍两种在 Ubuntu 18.04 上安装 MySQL 的方法:

  1. 从 Ubuntu 仓库上安装 MySQL。非常简单,但不是最新版(5.7)
  2. 从官方仓库安装 MySQL。你将额外增加一些步处理过程,但不用担心。你将会拥有最新版的MySQL(8.0)

有必要的时候,我将会提供屏幕截图去引导你。但这篇文章中的大部分步骤,我将直接在终端(默认热键: CTRL+ALT+T)输入命令。别害怕!

方法 1、从 Ubuntu 仓库安装 MySQL

首先,输入下列命令确保你的仓库已经被更新:

sudo apt update

现在,安装 MySQL 5.7,简单输入下列命令:

sudo apt install mysql-server -y

就是这样!简单且高效。

方法 2、使用官方仓库安装 MySQL

虽然这个方法多了一些步骤,但我将逐一介绍,并尝试写下清晰的笔记。

首先浏览 MySQL 官方网站的下载页面

在这里,选择 DEB 软件包,点击“Download”链接。

滑到有关于 Oracle 网站信息的底部,右键 “No thanks, just start my download.”,然后选择 “Copy link location”。

现在回到终端,我们将使用 Curl 命令去下载这个软件包:

curl -OL https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb

https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb 是我刚刚从网页上复制的链接。根据当前的 MySQL 版本,它有可能不同。让我们使用 dpkg 去开始安装 MySQL:

sudo dpkg -i mysql-apt-config*

更新你的仓库:

sudo apt update

要实际安装 MySQL,我们将使用像第一个方法中同样的命令来安装:

sudo apt install mysql-server -y

这样做会在你的终端中打开包配置的提示。使用向下箭头选择“Ok”选项。

点击回车。这应该会提示你输入密码:这是在为 MySQL 设置 root 密码。不要与 Ubuntu 的 root 密码混淆

输入密码然后点击 Tab 键去选择“Ok“。点击回车键,你将重新输入密码。操作完之后,再次键入 Tab 去选择 “Ok”。按下回车键。

将会展示一些关于 MySQL Server 的配置信息。再次按下 Tab 去选择 “Ok” 和按下回车键:

这里你需要去选择默认验证插件。确保选择了“Use Strong Password Encryption”。按下 Tab 键和回车键。

就是这样!你已经成功地安装了 MySQL。

验证你的 MySQL 安装

要验证 MySQL 已经正确安装,使用下列命令:

sudo systemctl status mysql.service

这将展示一些关于 MySQL 服务的信息:

你应该在那里看到 “Active: active (running)”。如果你没有看到,使用下列命令去开始这个服务:

sudo systemctl start mysql.service

配置/保护 MySQL

对于刚安装的 MySQL,你应该运行它提供的安全相关的更新命令。就是:

sudo mysql_secure_installation

这样做首先会询问你是否想使用 “ 密码有效强度 validate password component ”。如果你想使用它,你将必须选择一个最小密码强度(0 – 低,1 – 中,2 – 高)。你将无法输入任何不遵守所选规则的密码。如果你没有使用强密码的习惯(本应该使用),这可能会配上用场。如果你认为它可能有帮助,那你就键入 y 或者 Y,按下回车键,然后为你的密码选择一个强度等级和输入一个你想使用的密码。如果成功,你将继续强化过程;否则你将重新输入一个密码。

但是,如果你不想要此功能(我不会),只需按回车或任何其他键即可跳过使用它。

对于其他选项,我建议开启它们(对于每一步输入 y 或者 Y 和按下回车)。它们(依序)是:“ 移除匿名用户 remove anonymous user ”,“ 禁止 root 远程登录 disallow root login remotely ”,“ 移除测试数据库及其访问 remove test database and access to it ”。“ 重新载入权限表 reload privilege tables now ”。

链接与断开 MySQL Server

为了运行 SQL 查询,你首先必须使用 MySQL 连到服务器并在 MySQL 提示符使用。

执行此操作的命令是:

mysql -h host_name -u user -p
  • -h 用来指定一个主机名(如果这个服务被安装到其他机器上,那么会有用;如果没有,忽略它)
  • -u 指定登录的用户
  • -p 指定你想输入的密码.

虽然出于安全原因不建议,但是你可以在命令行最右边的 -p 后直接输入密码。例如,如果用户test_user 的密码是 1234,那么你可以在你使用的机器上尝试去连接,你可以这样使用:

mysql -u test_user -p1234

如果你成功输入了必要的参数,你将会收到由 MySQL shell 提示符提供的欢迎(mysql >):

要从服务端断开连接和离开 MySQL 提示符,输入:

QUIT

输入 quit (MySQL 不区分大小写)或者 \q 也能工作。按下回车退出。

你使用简单的命令也能输出关于版本的信息:

sudo mysqladmin -u root version -p

如果你想看命令行选项列表,使用:

mysql --help

卸载 MySQL

如果您决定要使用较新版本或只是想停止使用 MySQL。

首先,关闭服务:

sudo systemctl stop mysql.service && sudo systemctl disable mysql.service

确保你备份了你的数据库,以防你之后想使用它们。你可以通过运行下列命令卸载 MySQL:

sudo apt purge mysql*

清理依赖:

sudo apt autoremove

小结

在这篇文章中,我已经介绍如何在 Ubuntu Linux 上安装 Mysql。我很高兴如果这篇文章能帮助到那些正为此挣扎的用户或者刚刚开始的用户。

如果你发现这篇文章是一个很有用的资源,在评论里告诉我们。你为了什么使用 MySQL? 我们渴望收到你的任何反馈、印象和建议。感谢阅读,并毫不犹豫地尝试这个很棒的工具!


via: https://itsfoss.com/install-mysql-ubuntu/

作者:Sergiu 选题:lujun9972 译者:arrowfeng 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

几个月前,我在Ubuntu 18.04 上安装了 LAMP。今天,我尝试以 root 用户身份登录数据库,但我完全忘记了密码。经过一阵 Google 搜索并浏览一些文章后,我成功重置了密码。对于那些想知道如何做到这一点的人,这个简短的教程解释了如何在类 Unix 操作系统中重置 MySQL 或 MariaDB Root 密码。

重置 MySQL 或 MariaDB Root 密码

首先,停止数据库。

如果你使用 MySQL,请输入以下命令并下按回车键。

$ sudo systemctl stop mysql

对于 MariaDB:

$ sudo systemctl stop mariadb

接下来,使用以下命令在没有权限检查的情况下重新启动数据库:

$ sudo mysqld_safe --skip-grant-tables &

这里, --skip-grant-tables 选项让你在没有密码和所有权限的情况下进行连接。如果使用此选项启动服务器,它还会启用 --skip-networking 选项,这用于防止其他客户端连接到数据库服务器。并且,& 符号用于在后台运行命令,因此你可以在以下步骤中输入其他命令。请注意,上述命令很危险,并且你的数据库会变得不安全。你应该只在短时间内运行此命令以重置密码。

接下来,以 root 用户身份登录 MySQL/MariaDB 服务器:

$ mysql

mysql >MariaDB [(none)] > 提示符下,运行以下命令重置 root 用户密码:

UPDATE mysql.user SET Password=PASSWORD('NEW-PASSWORD') WHERE User='root';

使用你自己的密码替换上述命令中的 NEW-PASSWORD

然后,输入以下命令退出 mysql 控制台。

FLUSH PRIVILEGES;
exit

最后,关闭之前使用 --skip-grant-tables 选项运行的数据库。为此,运行:

$ sudo mysqladmin -u root -p shutdown

系统将要求你输入在上一步中设置的 MySQL/MariaDB 用户密码。

现在,使用以下命令正常启动 MySQL/MariaDB 服务:

$ sudo systemctl start mysql

对于 MariaDB:

$ sudo systemctl start mariadb

使用以下命令验证密码是否确实已更改:

$ mysql -u root -p

今天就是这些了。还有更多好东西。敬请期待!

干杯!


via: https://www.ostechnix.com/how-to-reset-mysql-or-mariadb-root-password/

作者:SK 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

MySQL 文档存储 可以跳过底层数据结构创建、数据规范化和其它使用传统数据库时需要做的工作,直接存储数据。

MySQL 可以提供 NoSQL JSON 文档存储 Document Store 了,这样开发者保存数据前无需 规范化 normalize 数据、创建数据库,也无需在开发之前就制定好数据样式。从 MySQL 5.7 版本和 MySQL 8.0 版本开始,开发者可以在表的一列中存储 JSON 文档。由于引入 X DevAPI,你可以从你的代码中移除令人不爽的结构化查询字符串,改为使用支持现代编程设计的 API 调用。

系统学习过结构化查询语言(SQL)、 关系理论 relational theory 集合 set 和其它关系数据库底层理论的开发者并不多,但他们需要一个安全可靠的数据存储。如果数据库管理人员不足,事情很快就会变得一团糟,

MySQL 文档存储 允许开发者跳过底层数据结构创建、数据规范化和其它使用传统数据库时需要做的工作,直接存储数据。只需创建一个 JSON 文档集合 document collection ,接着就可以使用了。

JSON 数据类型

所有这一切都基于多年前 MySQL 5.7 引入的 JSON 数据类型。它允许在表的一行中提供大约 1GB 大小的列。数据必须是有效的 JSON,否则服务器会报错;但开发者可以自由使用这些空间。

X DevAPI

旧的 MySQL 协议已经历经差不多四分之一个世纪,已经显现出疲态,因此新的协议被开发出来,协议名为 X DevAPI。协议引入高级会话概念,允许代码从单台服务器扩展到多台,使用符合 通用主机编程语言样式 common host-language programming patterns 的非阻塞异步 I/O。需要关注的是如何遵循现代实践和编码风格,同时使用 CRUD (Create、 Read、 Update、 Delete)样式。换句话说,你不再需要在你精美、纯洁的代码中嵌入丑陋的 SQL 语句字符串。

一个新的 shell 支持这种新协议,即所谓的 MySQL Shell。该 shell 可用于设置 高可用集群 high-availability cluster 、检查服务器 升级就绪状态 upgrade readiness 以及与 MySQL 服务器交互。支持的交互方式有以下三种:JavaScript,Python 和 SQL。

代码示例

下面的代码示例基于 JavaScript 方式使用 MySQL Shell,可以从 JS> 提示符看出。

下面,我们将使用用户 dstokes 、密码 password 登录本地系统上的 demo 库。db 是一个指针,指向 demo 库。

$ mysqlsh dstokes:password@localhost/demo
JS> db.createCollection("example")
JS> db.example.add(
      {
        Name: "Dave",
        State:  "Texas",
        foo : "bar"
      }
     )
JS>

在上面的示例中,我们登录服务器,连接到 demo 库,创建了一个名为 example 的集合,最后插入一条记录;整个过程无需创建表,也无需使用 SQL。只要你能想象的到,你可以使用甚至滥用这些数据。这不是一种代码对象与关系语句之间的映射器,因为并没有将代码映射为 SQL;新协议直接与服务器层打交道。

Node.js 支持

新 shell 看起来挺不错,你可以用其完成很多工作;但你可能更希望使用你选用的编程语言。下面的例子使用 world_x 示例数据库,搜索 _id 字段匹配 CAN. 的记录。我们指定数据库中的特定集合,使用特定参数调用 find 命令。同样地,操作也不涉及 SQL。

var mysqlx = require('@mysql/xdevapi');
mysqlx.getSession({             //Auth to server
        host: 'localhost',
        port: '33060',
        dbUser: 'root',
        dbPassword: 'password'
}).then(function (session) {    // use world_x.country.info
     var schema = session.getSchema('world_x');
     var collection = schema.getCollection('countryinfo');

collection                      // Get row for 'CAN'
  .find("$._id == 'CAN'")
  .limit(1)
  .execute(doc => console.log(doc))
  .then(() => console.log("\n\nAll done"));

  session.close();
})

下面例子使用 PHP,搜索 _id 字段匹配 USA 的记录:

<?PHP
// Connection parameters
  $user = 'root';
  $passwd = 'S3cret#';
  $host = 'localhost';
  $port = '33060';
  $connection_uri = 'mysqlx://'.$user.':'.$passwd.'@'.$host.':'.$port;
  echo $connection_uri . "\n";

// Connect as a Node Session
  $nodeSession = mysql_xdevapi\getNodeSession($connection_uri);
// "USE world_x" schema
  $schema = $nodeSession->getSchema("world_x");
// Specify collection to use
  $collection = $schema->getCollection("countryinfo");
// SELECT * FROM world_x WHERE _id = "USA"
  $result = $collection->find('_id = "USA"')->execute();
// Fetch/Display data
  $data = $result->fetchAll();
  var_dump($data);
?>

可以看出,在上面两个使用不同编程语言的例子中,find 操作符的用法基本一致。这种一致性对跨语言编程的开发者有很大帮助,对试图降低新语言学习成本的开发者也不无裨益。

支持的语言还包括 C、Java、Python 和 JavaScript 等,未来还会有更多支持的语言。

从两种方式受益

我会告诉你使用 NoSQL 方式录入的数据也可以用 SQL 方式使用?换句话说,我会告诉你新引入的 NoSQL 方式可以访问旧式关系型表中的数据?现在使用 MySQL 服务器有多种方式,作为 SQL 服务器,作为 NoSQL 服务器或者同时作为两者。


via: https://opensource.com/article/18/6/mysql-document-store

作者:Dave Stokes 选题:lujun9972 译者:pinewall 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果你不改变 MySQL 的缺省配置,你的服务器的性能就像题图的坏在一档的法拉利一样 “虎落平阳被犬欺” …

我并不期望成为一个专家级的 DBA,但是,在我优化 MySQL 时,我推崇 80/20 原则,明确说就是通过简单的调整一些配置,你可以压榨出高达 80% 的性能提升。尤其是在服务器资源越来越便宜的当下。

警告

  1. 没有两个数据库或者应用程序是完全相同的。这里假设我们要调整的数据库是为一个“典型”的 Web 网站服务的,优先考虑的是快速查询、良好的用户体验以及处理大量的流量。
  2. 在你对服务器进行优化之前,请做好数据库备份!

1、 使用 InnoDB 存储引擎

如果你还在使用 MyISAM 存储引擎,那么是时候转换到 InnoDB 了。有很多的理由都表明 InnoDB 比 MyISAM 更有优势,如果你关注性能,那么,我们来看一下它们是如何利用物理内存的:

  • MyISAM:仅在内存中保存索引。
  • InnoDB:在内存中保存索引数据。

结论:保存在内存的内容访问速度要比磁盘上的更快。

下面是如何在你的表上去转换存储引擎的命令:

ALTER TABLE table_name ENGINE=InnoDB;

注意:你已经创建了所有合适的索引,对吗?为了更好的性能,创建索引永远是第一优先考虑的事情。

2、 让 InnoDB 使用所有的内存

你可以在 my.cnf 文件中编辑你的 MySQL 配置。使用 innodb_buffer_pool_size 参数去配置在你的服务器上允许 InnoDB 使用物理内存数量。

对此(假设你的服务器仅仅运行 MySQL),公认的“经验法则”是设置为你的服务器物理内存的 80%。在保证操作系统不使用交换分区而正常运行所需要的足够内存之后 ,尽可能多地为 MySQL 分配物理内存。

因此,如果你的服务器物理内存是 32 GB,可以将那个参数设置为多达 25 GB。

innodb_buffer_pool_size = 25600M

*注意:(1)如果你的服务器内存较小并且小于 1 GB。为了适用本文的方法,你应该去升级你的服务器。 (2) 如果你的服务器内存特别大,比如,它有 200 GB,那么,根据一般常识,你也没有必要为操作系统保留多达 40 GB 的内存。 *

3、 让 InnoDB 多任务运行

如果服务器上的参数 innodb_buffer_pool_size 的配置是大于 1 GB,将根据参数 innodb_buffer_pool_instances 的设置, 将 InnoDB 的缓冲池划分为多个。

拥有多于一个的缓冲池的好处有:

在多线程同时访问缓冲池时可能会遇到瓶颈。你可以通过启用多缓冲池来最小化这种争用情况:

对于缓冲池数量的官方建议是:

为了实现最佳的效果,要综合考虑 innodb_buffer_pool_instancesinnodb_buffer_pool_size 的设置,以确保每个实例至少有不小于 1 GB 的缓冲池。

因此,在我们的示例中,将参数 innodb_buffer_pool_size 设置为 25 GB 的拥有 32 GB 物理内存的服务器上。一个合适的设置为 25600M / 24 = 1.06 GB

innodb_buffer_pool_instances = 24

注意!

在修改了 my.cnf 文件后需要重启 MySQL 才能生效:

sudo service mysql restart

还有更多更科学的方法来优化这些参数,但是这几点可以作为一个通用准则来应用,将使你的 MySQL 服务器性能更好。


作者简介:

我喜欢商业技术以及跑车 | 集团 CTO @ Parcel Monkey, Cloud Fulfilment & Kong。


via: https://medium.com/@richb_/tuning-mysql-3-simple-tweaks-6356768f9b90

作者:Rich Barrett 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

之前我们学过了在 Centos/RHEL 7 上安装 MariaDB 服务器并保证其安全,使之成为了 RHEL/CentOS 7 的默认数据库。现在我们再来看看一些有用的 MariaDB 管理命令。这些都是使用 MariaDB 最基础的命令,而且它们对 MySQL 也同样适合,因为 MariaDB 就是 MySQL 的一个分支而已。

(推荐阅读:在 RHEL/CentOS 上安装并配置 MongoDB

MariaDB 管理命令

1、查看 MariaDB 安装的版本

要查看所安装数据库的当前版本,在终端中输入下面命令:

$ mysql -version

该命令会告诉你数据库的当前版本。此外你也可以运行下面命令来查看版本的详细信息:

$ mysqladmin -u root -p version

2、登录 MariaDB

要登录 MariaDB 服务器,运行:

$ mysql -u root -p

然后输入密码登录。

3、列出所有的数据库

要列出 MariaDB 当前拥有的所有数据库,在你登录到 MariaDB 中后运行:

> show databases;

(LCTT 译注:$ 这里代表 shell 的提示符,> 这里代表 MariaDB shell 的提示符。)

4、创建新数据库

在 MariaDB 中创建新数据库,登录 MariaDB 后运行:

> create database dan;

若想直接在终端创建数据库,则运行:

$ mysqladmin -u user -p create dan

这里,dan 就是新数据库的名称。

5、删除数据库

要删除数据库,在已登录的 MariaDB 会话中运行:

> drop database dan;

此外你也可以运行,

$ mysqladmin -u root -p drop dan

注意: 若在运行 mysqladmin 命令时提示 “access denied” 错误,这应该是由于我们没有给 root 授权。要对 root 授权,请参照第 7 点方法,只是要将用户改成 root。

6、创建新用户

为数据库创建新用户,运行:

> CREATE USER 'dan'@'localhost' IDENTIFIED BY 'password';

7、授权用户访问某个数据库

授权用户访问某个数据库,运行:

> GRANT ALL PRIVILEGES ON test.* to 'dan'@'localhost';

这会赋予用户 dan 对名为 test 的数据库完全操作的权限。我们也可以限定为用户只赋予 SELECTINSERTDELETE 权限。

要赋予访问所有数据库的权限,将 test 替换成 * 。像这样:

> GRANT ALL PRIVILEGES ON *.* to 'dan'@'localhost';

8、备份/导出数据库

要创建单个数据库的备份,在终端窗口中运行下列命令,

$ mysqldump -u root -p database_name>db_backup.sql

若要一次性创建多个数据库的备份则运行:

$ mysqldump -u root -p --databases db1 db2 > db12_backup.sql

要一次性导出多个数据库,则运行:

$ mysqldump -u root -p --all-databases > all_dbs.sql

9、从备份中恢复数据库

要从备份中恢复数据库,运行:

$ mysql -u root -p database_name < db_backup.sql

但这条命令成功的前提是预先没有存在同名的数据库。如果想要恢复数据库数据到已经存在的数据库中,则需要用到 mysqlimport 命令:

$ mysqlimport -u root -p database_name < db_backup.sql

10、更改 MariaDB 用户的密码

本例中我们会修改 root 的密码,但修改其他用户的密码也是一样的过程。

登录 MariaDB 并切换到 'mysql' 数据库:

$ mysql -u root -p
> use mysql;

然后运行下面命令:

> update user set password=PASSWORD('your_new_password_here') where User='root';

下一步,重新加载权限:

> flush privileges;

然后退出会话。

我们的教程至此就结束了,在本教程中我们学习了一些有用的 MariaDB 管理命令。欢迎您的留言。


via: http://linuxtechlab.com/mariadb-administration-commands-beginners/

作者:Shusain 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出