导出数据库

如果 MySQL 可以导入数据库,那么它也可以将数据库导出到 SQL 文件。

为此,无需在 MySQL 控制台中,我们运行以下命令:

$ sudo mysqldump -u username -p database_to_export > file.sql

我们可以使用 ls 命令检查结果:

运行该命令时,系统将提示我们输入 MySQL 根用户密码。

另外,请记住,此命令必须由系统的 root 用户运行或者使用 sudo。
最后,可以选择输出文件的路径。

授予所有权限

新创建的用户对任何数据库都没有任何权限。
事实上,我们也无法访问 MySQL shell。
然后,root 用户必须向这个新用户授予某些权限。

有多种权限,它们的分配取决于服务器管理员。
他们之中有一些是:

  • ALL PRIVILEGES:分配所选数据库的所有权限。
  • CREATE:此权限允许我们创建新表或者数据库。
  • DROP:在这种情况下,它允许我们删除表和数据库。
  • DELETE:它允许从表中删除记录。
  • INSERT:使用此权限,我们可以在表中创建记录。
  • SELECT:从表中读取记录需要此权限。
  • UPDATE:它允许我们更新表的记录。
  • 授予选项:使用此权限,用户可以删除某些用户的权限。

授予权限的语法如下:

> GRANT [privilege1, privilege2] ON [database].[table] TO '[user]'@'localhost';

例如:

> GRANT CREATE ON test.* TO 'user'@'localhost';

在这种情况下,用户只能在名为 test 的数据库中创建表。

相反,如果我们想在一次对测试数据库的调用中授予对所有表的所有权限,最好的选择是 ALL PRIVILEGES。
这是一个例子:

> GRANT ALL PRIVILEGES ON test.* TO 'user'@'localhost';

通过这种方式,在 MySQL 中为用户分配了权限。

MySQL配置文件(my.cnf)在哪里?

MySQL 作为系统服务运行。
在 Unix 系列系统中,服务是通过文本文件配置的。
my.cnf 文件是定义所有 MySQL 配置的文件。

如果使用 Ubuntu,可以在以下路径找到 MySQL 配置文件:

/etc/mysql/my.cnf

另一方面,如果我们使用 CentOS,则路径如下:

/etc/my.cnf

要记住的一件事是配置文件可能包含其他配置文件。
这是为了分离配置并使它们更易于理解。

如果要查看其内容,可以使用 cat 命令:

$ cat /etc/mysql/my.cnf

我们可以使用文本编辑器(例如 nano 或者 vim )编辑其内容。
在 Ubuntu 的情况下,大部分配置都在

/etc/mysql/conf.d/

请记住,如果我们要编辑它,请先创建文件的备份。

备份数据库

MySQL 有一个名为 mysqldump 的工具,它允许我们备份 MySQL 实例中的数据库。
这是一个非常有用和敏捷的工具。

进行备份类似于我们之前看到的导出数据库。
但是,也可以使用此工具备份所有现有数据库。

对于它,以 root 用户或者使用 sudo 运行以下命令就足够了:

$ sudo mysqldump -u root -p --all-databases > alldatabases.sql

列出所有 MySQL 数据库

随着时间的推移,我们的 MySQL 实例将充满许多数据库。
然后,最好在某个时候将它们全部列出。

为此,请以 root 用户身份或者使用 sudo 使用以下命令访问 MySQL 控制台:

$ sudo mysql -u root -p

一旦我们进入 MySQL 控制台,只需使用以下命令列出所有现有数据库:

> SHOW DATABASES;

在屏幕输出中,我们可以看到所有的数据库。

重启 MySQL

如果我们对 MySQL 设置进行了任何更改,它们将不会生效,直到我们重新启动 MySQL 或者重新启动 MySQL 服务。

要重新启动 MySQL,只需使用以下命令:

$ sudo systemctl restart mysql

对于 CentOS,使用这个作为 root 用户:

$ systemctl restart mysqld

如果该命令没有生成任何屏幕输出,则表示服务已成功重新启动。

导入 SQL 文件

MySQL 允许我们以 SQL 格式导入数据库备份。
如果我们想将数据库移动到新服务器,这是一个很大的优势。

第一个要求是创建一个将导入 SQL 文件的数据库。

> CREATE DATABASE example2;

然后,我们可以使用以下命令退出控制台:

> exit;

之后,我们可以以 root 用户身份使用以下命令开始导入文件:

$ sudo mysql -u username -p [database] < [sql_file_path]

注意需要写出SQL文件所在的完整路径。
在我们的例子中,文件“file.sql”位于主文件夹中。

创建一个 MySQL 表

创建新 MySQL 实例时最基本的操作之一是创建表。

但是,要创建表,我们必须创建一个数据库。

进入 MySQL 控制台后,我们使用以下命令创建数据库:

> CREATE DATABASE [database_name];

然后,我们需要选择新创建的数据库。

> USE [database_name];

在这种情况下,我将创建一个名为“Example”的数据库。

现在我们可以创建表了。
创建表的基本 MySQL 语法如下:

> CREATE TABLE [table_name] (column1_name data_type(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT], column2_name data_type(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT] ... );

在以下示例中,我将创建一个名为“Person”的表,其中包含三列。
第一个是“Id”,它是长度为 10 的整数类型,不能为空。

通常,第一列是专用于主键的列。
此外,[] 中的选项是可选的。

第二列是“name”,它是长度为 10 的 varchar,最后一列是“last_name”,它也是长度为 10 的 varchar。

> CREATE TABLE Person (Id int(10) NOT NULL, name varchar(10), last_name varchar(10));

惊人的!我们刚刚创建了一个 MySQL 表。
但是这个表是空的,因为它刚刚创建,还没有插入数据。
现在让我们看看如何将数据插入到该表中。

为 MySQL 设置 root 密码

MySQL root 用户是拥有所有数据库的所有权限的用户。
所以必须为这个用户定义一个非常强的密码。

root 用户可以做的一些操作:

  • 创建新用户。
  • 管理用户的权限。

为此,我们将使用 mysql_secure_installation 脚本,在这里我们不仅可以定义 root 用户的密码,还可以添加其他配置。

因此,在 Ubuntu 中,运行以下命令以使用 mysql_secure_installation 脚本。

$  sudo mysql_secure_installation

在 CentOS 上,命令相同,但以 root 用户身份运行。

$ mysql_secure_installation

第一个问题是关于激活验证密码插件。
启用它是个好主意。
然后,选择密码验证策略的级别。

接下来,我们可以设置root用户密码:

之后,插件将评估密码的强度。
输入 Y 继续。

然后,它会询问我们必须回答的其他配置问题。
答案取决于每个特定案例。

恭喜!已正确定义 root 密码。

CRUD 操作

对数据库表的 CRUD 操作是其他非常基本的数据操作操作。
所以,我们需要学习如何去做。

CRUD 代表:

C : 创建一个表。

R:从数据库中读取数据。

U : 更新数据库。

D:从数据库中删除数据。

创建新记录(插入)

创建表后,就可以向其中插入记录了。
为此,有必要知道表的列是哪种类型。

对于这个例子,我们将使用我们之前创建的同一个表。
使用插入语句创建记录的基本语法如下:

> INSERT INTO table_name (column1, column2, column3,..) VALUES ( value1, value2, value3,..);

所以,它会是这样的:

> INSERT INTO Person (Id, name, last_name) VALUES (1,'jack','Winters');

从表中读取数据(选择)

一旦数据被保存,就该读取它了。
语句是 select 。
基本语法如下:

> SELECT column1, column2, ... FROM table_name;

如果要读取表中的所有数据,请使用以下一项:

> SELECT * FROM table_name;

但是,通常需要设置一个条件来读取我们需要的数据。
我们可能拥有数百万或者数十亿条记录,强烈建议不要一次返回所有这些数据。

为此,请将 Where 子句与条件一起添加。

> SELECT * FROM table_name WHERE [condition]

例如,如果我想读取 id 为 1 的所有字段,我将使用以下语句:

> SELECT * FROM Person WHERE Id=1;

更新数据

我们可能插入了不正确的数据,因此我们需要更新它。
为此,我们需要使用 Update 语句。

首先,你需要知道哪些记录需要更新;有必要补充一个小条件。
否则,它将更新所有记录。
所以你需要小心。

基本语法如下:

> UPDATE table_name SET column1 = value1, column2 = value2 WHERE [condition];

继续前面的例子,如果要更新Id为“1”的数据的“last_name”列,可以通过以下方式进行:

> UPDATE Person SET last_name = 'Clark' WHERE Id=1;

现在,再次运行 select 语句以查看更改:

> SELECT * FROM Person;

删除一条记录

如果要删除记录,可以使用 delete 语句。
此外,我们必须使用条件来知道要删除哪条记录。

删除命令的基本语法如下:

> DELETE FROM table_name WHERE condition;

例如,如果要删除 Id 值为 1 的记录,则语句如下:

> DELETE from Person WHERE Id=1;

检查 MySQL 版本

MySQL 是一个开发相当活跃的应用程序。
除此之外,大型 Linux 发行版不断发送安全补丁。
所以最好知道安装了哪个版本的 MySQL。

另一方面,在互联网上,他们经常发布有关发现的安全漏洞以及受影响的版本的出版物。

通过了解我们拥有哪个版本,我们将能够知道我们是否有任何漏洞并采取预防措施。

为此,只需运行以下命令:

$ mysql --version

在那里我们可以看到安装的当前版本,以便我们可以根据我们的需要对其进行更新或者保留。

启动 MySQL 并在启动时启用

现在 MySQL 已安装但仍未运行。
那么如何启动MySQL呢?

从以前的 Linux 版本开始,systemd 负责管理系统服务。
我们可能已经知道,MySQL 是一个系统服务。

要开始运行 MySQL 服务,请在终端中键入以下命令:

$ sudo systemctl start mysql

如果我们使用 CentOS,请以 root 用户身份使用此命令:

$ systemctl start mysqld

正如我们所见,没有输出。
这意味着服务启动成功。

如果我们重新启动系统,我们会注意到 MySQL 没有运行。
所以我们需要让它在系统启动时运行。

为此,请使用 systemctl 命令但添加启用选项:

$ sudo systemctl enable mysql

如果我们使用的是 CentOS:

$ systemctl enable mysqld

现在,如果我们重新启动系统,我们会注意到 MySQL 正在运行。
让我们看看如何确保这一点。

在 MySQL 上创建用户

使用 MySQL 是一件微妙的事情,不是因为服务本身的复杂性,而是因为安全策略,我们必须实施以保护数据。

基本安全策略是为每个应用程序或者数据库创建特定用户。

为此,我们必须首先以 root 用户身份访问 MySQL shell:

$ sudo mysql -u root -p

在 CentOS 上:

$ mysql -u root -p

运行该命令时,系统会要求我们输入 MySQL 根用户密码。
然后,我们将能够使用 MySQL 命令。

要创建新用户,请运行以下语句:

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

用我们选择的用户名替换“用户”。
“localhost”是我们将其中创建用户的主机。
在“密码”中输入这个新用户的密码。
同样,建议使用强密码。

Linux 上的 MySQL 日志在哪里?

日志文件是与特定程序或者系统服务相关的所有事件的顺序记录。

不时地检查它们以寻找程序执行中的任何异常行为是非常重要的。
另外,当MySQL服务失败或者无法启动时,错误会直接记录在日志中。

在 Ubuntu 上,MySQL 日志保存在

/var/log/mysql/error.log

.

在 CentOS 的情况下,该文件位于

/var/log/mysqld.log

要查看文件的内容,可以使用 tail 命令。

例如:

$ tail /var/log/mysql/error.log

或者,如果我们使用 CentOS:

$ tail /var/log/mysqld.log

通过运行它,我们将能够看到服务发生的一切。

此外,我们可以在 tail 命令中使用 -f 选项来持续查看日志记录的最新更新。

$ tail -f /var/log/mysqld.log

在 Linux Ubuntu 和 CentOS 上安装 MySQL

在 Linux 上使用 MySQL 的第一步显然是在我们的系统中安装它。

Ubuntu 和 CentOS 是两个最常用的 Linux 发行版。
就 Ubuntu 而言,它在来自其他操作系统(如 Windows)的新手中很受欢迎。

最近,Ubuntu 开发背后的 Canonical 一直在分析 Ubuntu 以用于服务器。

另一方面,CentOS 作为 Red Hat Enterprise Linux 的克隆而诞生,一直以服务器领域为主要目标。

因此,如果我们使用 Ubuntu,则可以通过在终端会话中键入以下命令来安装 MySQL:

$ sudo apt install mysql-server

然后,在输入用户密码后,它将开始下载和后续安装。

另一方面,CentOS 默认情况下在其存储库中不包含 MySQL。
但是,添加 MySQL 存储库来安装它很容易。
首先,切换到root用户,然后添加存储库。

$ su
$ yum install https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm

键入 Y 以启动该过程。

现在,我们可以在 CentOS 上安装 MySQL。
只需键入以下命令:

$ yum install mysql-community-server

MySQL 在 Linux 上安装在哪里?

通常,每个 Linux 发行版都有其解压缩我们安装的每个程序的方法。
但是,Linux 有一些约定。

通常,MySQL 二进制文件位于以下位置:

/usr/bin

另一方面,最好知道数据库在系统中的存储位置。
通常位置如下:

/var/lib/mysql/

最后,如果我们想知道所有已安装的 MySQL 文件所在的位置,可以运行以下命令:

对于 Ubuntu:

$ dpkg -L mysql-server

卸载 MySQL

如果我们想从 Linux 卸载 MySQL,只需调用每个发行版的包管理器。

对于 Ubuntu,我们使用 APT 包管理器。
要卸载它,以下命令就足够了:

$ sudo apt remove mysql

在 CentOS 上,包管理器是 YUM,所以以 root 用户身份,执行以下命令:

$ yum remove mysql-community-server

检查 MySQL 正在运行的端口

管理 MySQL 服务的一个重要部分是了解实例在哪个端口上运行。
默认情况下,MySQL 使用的端口是 3306.
但是,始终建议在开始工作之前进行检查。

要检查 Linux 上 MySQL 使用的端口,我们可以使用以下两个命令之一:

$ lsof -n | grep 'mysql.*TCP'

或者,我们也可以使用这个:

$ netstat -tlpn | grep mysql

无论如何,如果我们使用像 iptables 或者 CSF 防火墙这样的防火墙,知道 MySQL 使用哪个端口以便打开该端口非常有用。

使 MySQL 不区分大小写

在开发独立应用程序时,表的名称通常是一个问题。
默认情况下,MySQL 在表名中区分大小写。

因此,在某些情况下,我们需要恢复此行为。

要进行此更改,需要在 MySQL 配置文件中添加指令。
首先,停止MySQL服务。

$ sudo systemctl stop mysql

如果我们使用 CentOS,命令如下:

$ systemctl stop mysqld

在此之后,编辑以下特定配置文件。
所以用root用户权限打开它:

在 Ubuntu 上:

$ sudo nano  /etc/mysql/mysql.conf.d/mysqld.cnf

如果我们使用 CentOS,路径会有所不同。
路径将是

/etc/my.cnf

然后,在 [mysqld] 部分下添加以下指令:

lower_case_table_names = 1

然后保存更改并关闭文件。

接下来,我们需要再次启动 MySQL 服务。

$ sudo systemctl start mysql

或者在 CentOS 上:

$ systemctl start mysqld
Linux 上的 MySQL教程

MySQL 是世界上最流行的关系数据库引擎之一。

检查 MySQL 是否正在运行

我们可以使用 systemctl 命令检查 MySQL 是否正在运行,但添加 status 选项:

$ sudo systemctl status mysql

对于 CentOS,该命令应以 root 用户身份运行,如下所示:

$ systemctl status mysqld

该命令生成带有绿色信号的屏幕输出,指示服务正在运行。

否则,它显示为灰色,表示它处于非活动状态或者已停止。

检查是否安装了 MySQL

在两个系统上的安装过程中可能出现问题。
因此,检查是否安装了 MySQL 是一个好主意。

在两个系统(Ubuntu 和 CentOS)上,如果你想检查 MySQL 是否安装正确,你可以使用以下命令显示版本:

$ mysql --version
日期:2020-07-15 11:16:31 来源:oir作者:oir