Linux管理MySQL入门教程

MySQL是世界上最流行的关系型数据库管理系统,它由于免费开源并具有相当稳定的特性而闻名。在本文中,我们将介绍如何在Linux系统(Ubuntu和CentOS)上安装、操作和管理MySQL。

Linux管理MySQL入门教程
Linux管理MySQL入门教程

在Ubuntu和CentOS上安装MySQL

Ubuntu和CentOS是使用最为广泛的的两个Linux发行版本。就Ubuntu而言,它在其他操作系统(例如Windows)的新手中非常流行。Ubuntu和CentOS在服务器领域有广泛的应用,现在我们来看一下如何在Ubuntu和CentOS上安装MySQL。

在Ubuntu系统上,可以执行以下命令来安装MySQL:

$ sudo apt install mysql-server
Linux管理MySQL入门教程
Ubuntu上安装MySQL

对于CentOS系统,MySQL默认没有被包含在其软件仓库中,我们需要将MySQL添加到CentOS的软件仓库。首先,切换到root用户,然后将MySQL添加到软件仓库。

$ su

$ yum install https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
Linux管理MySQL入门教程
添加软件仓库安装MySQL

输入”Y”继续。

现在,就可以在CentOS上安装MySQL。执行以下命令安装MySQL:

$ yum install mysql-community-server
Linux管理MySQL入门教程
CentOS安装MySQL

检查MySQL是否安装成功

因为各种难以预料的原因,我们的MySQL可能没有正确安装。所以,我们需要在安装后,通过以下命令,查看MySQL的版本以确认是否安装成功:

$ mysql --version
检测MySQL的版本
检测MySQL的版本

通过上述查询,我们能够看到MySQL的版本信息,这意味着MySQL已正确安装并可以使用。

MySQL在Linux的安装路径?

通常,MySQL的目录位于以下位置:

/ usr / bin

MySQL的数据库存储位置。通常位置如下:

/ var / lib / mysql /

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

对于Ubuntu:

$ dpkg -L mysql-server
查看MySQL安装位置
查看MySQL安装位置

MySQL配置文件(my.cnf)位置?

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

/etc/mysql/my.cnf

对于CentOS,则路径如下:

/etc/my.cnf

如果要查看my.cnf的内容,可以使用cat命令:

$ cat /etc/mysql/my.cnf
MySQL的配置文件
MySQL的配置文件

我们可以使用文本编辑器(例如nanovim)编辑my.cnf的内容。对于Ubuntu,大多数配置位于:

/etc/mysql/conf.d/

这里需要提醒的是,如果要编辑配置文件,请首先创建文件的备份以备不测。

启动MySQL

现在,已在系统上成功安装MySQL,我们需要启动MySQL。

要开始运行MySQL服务,执行以下命令:

$ sudo systemctl start mysql

如果使用的是CentOS,请以root用户执行以下命令:

$ systemctl start mysqld
启动MySQL
启动MySQL

如果没有返回任何内容,则意味着服务已成功启动。

如果现在重新启动系统,就会发现MySQL并未运行。这是因为,我们需要设置MySQL能在系统启动时自动启动。

执行以下命令,开启MySQL随系统启动自动启动:

$ sudo systemctl enable mysql

如果使用的是CentOS:

$ systemctl enable mysqld
设置MySQL开机启动
设置MySQL开机启动

现在,如果重新启动系统,我们就会发现,MySQL已经随系统启动自动运行。

检查MySQL运行状态

我们可以通过如下命令,检查MySQL是否正在运行:

$ sudo systemctl status mysql

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

$ systemctl status mysqld
查看MySQL的运行状态
查看MySQL的运行状态

我们看到输出结果显示的“active(running)”,说明MySQL正在运行。

否则,表明它处于非激活状态或已停止运行。

MySQL未启动状态
MySQL未启动状态

检查MySQL的运行端口

默认情况下,MySQL使用的端口是3306。要在Linux上检查MySQL使用的端口,可以使用以下两个命令之一来检测:

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

或者,也可以使用如下命令:

$ netstat -tlpn | grep mysql
检查MySQL的运行端口
检查MySQL的运行端口

重启MySQL

如果我们对MySQL的设置进行任何的更改,都需要重新启动MySQL使服务生效。

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

$ sudo systemctl restart mysql

对于CentOS,使用root用户运行如下命令:

$ systemctl restart mysqld
Linux管理MySQL入门教程
重启mysql

如果屏幕没有输出任何内容,则表示该服务已成功启动。

设置MySQL的root密码

MySQL的root用户对所有数据库拥有所有权。因此,我们必须为root用户设定一个足够复杂的密码。

root用户可以执行的操作:

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

我们将使用mysql_secure_installation脚本设置root用户的密码,以及进行其他配置。

在Ubuntu中,执行以下命令:

$ sudo mysql_secure_installation

在CentOS上,虽然使用相同的命令,但要以root用户身份运行。

$ mysql_secure_installation

第一个问题询问是否激活密码验证插件。然后,选择密码验证策略的级别。

密码验证插件
密码验证插件

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

设置MySQL的root密码
设置MySQL的root密码

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

之后,系统将询问一些其他的配置问题,一般情况下输入”Y”就可以了。

安全配置
安全配置

检查MySQL版本

执行以下命令:

$ mysql --version
MySQL的版本
MySQL的版本

在这里,可以看到已安装的当前版本。

为MySQL上创建用户

为了保障MySQL服务器的安全,牛奇网建议为每个应用程序或数据库创建专门的用户。

首先以root用户身份登录MySQL:

$ sudo mysql -u root -p

如在CentOS系统上:

$ mysql -u root -p
登录MySQL
登录MySQL

运行命令时,将要求输入MySQL的root用户的密码。登录后,就可以使用MySQL的命令进行配置了。

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

> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
创建新用户
创建新用户

用选定的用户名替换“user”。“ localhost”是您将在其中创建用户的主机。然后在“password”位置输入为该新用户设置的密码。

授予权限

新创建的用户在数据库上都没有任何权限,必须使用root用户向该新用户授予某些权限。

可分配的几种管理权限:

  • ALL PRIVILEGES:在所选数据库上分配所有权限。
  • CREATE:此权限使新用户可以创建新表或数据库。
  • DROP:它允许新用户删除数据库和表。
  • DELETE:它允许从表中删除记录。
  • INSERT:此权限,可以在表中创建记录。
  • SELECT:必须有此权限才能从表中读取数据。
  • UPDATE:它允许用户更新表的数据。
  • GRANT OPTION:对象授权,可以把用户权限授予其他用户或者收回权限。

授予权限的表达语句如下:

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

示例:

> GRANT CREATE ON test.* TO 'user'@'localhost';
授予用户权限
授予用户权限

在这种情况下,用户只能对“test”数据库进行创建表的操作。

如果要授予该用户对“test”数据库的所有权限,可以使用下面的语句:

> GRANT ALL PRIVILEGES ON test.* TO 'user'@'localhost';
授予用户所有权限
授予用户所有权限

列出所有MySQL数据库

有的时候,我们会创建多个数据库。为了在系统上列出所有存在的数据库,我们需要以root用户登录,或者以具有sudo权限的用户登录MySQL:

$ sudo mysql -u root -p

进入MySQL后,使用以下命令列出所有现有数据库:

> SHOW DATABASES;
列出所有现有数据库
列出所有现有数据库

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

创建数据库

进入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的整数类型,不能为null。第二列将是“名字”,将是长度为10的可变字符串,最后一列是“ 姓”,也是长度为10的可变字符串。

> CREATE TABLE Person(Id int(10)NOT NULL,name varchar(10),last_name varchar(10));
创建一个新的数据表
创建一个新的数据表

这样我们就创建了一个MySQL表。但是,该表是空的,因为它刚刚创建,尚未插入任何数据。现在,让我们看看如何将数据插入到该表中。

CRUD操作

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

CRUD含义:

C:创建一个表;

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

U:更新数据库;

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

创建一个新记录(insert)

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

此示例中,我们继续使用之前创建的“person”表。使用insert语句创建记录的基本语法如下:

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

示例如下:

> INSERT INTO Person(Id,name,last_name)VALUES(1,'Richard','Winters');
为表添加数据记录
为表添加数据记录

从表中读取数据(select)

数据保存后,就该读取数据了。读取数据使用select。基本语法如下:

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

如果要读取表中的所有数据,使用如下表达式:

> SELECT * FROM table_name;
使用MySQL的SELECT命令
使用MySQL的SELECT命令

但是,表中可能有数百万或数十亿条记录,这样我们就要根据我们需要的条件来读取数据。

为此,我们使用Where语句:

> SELECT * FROM table_name WHERE [condition]

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

> SELECT * FROM Person WHERE Id=1;
使用SELECT并限定条件
使用SELECT并限定条件

更新数据

有时,我们可能在表中插入了不正确的数据,需要对数据进行更改。为此,我们需要使用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命令的基本语法如下:

> DELETE FROM table_name WHERE condition;

例如,如果要删除ID值为1的记录,则该语句如下所示:

> DELETE from Person WHERE Id=1;
删除命令
删除命令

导入数据库备份

MySQL允许导入SQL格式的数据库备份文件,如果我们想将数据库迁移到新服务器上,经常需要这样做。

首先创建一个目标数据库。

> CREATE DATABASE example2;

然后,退出MySQL:

> exit;

之后,我们可以以root用户身份使用以下命令导入数据库备份文件:

$ sudo mysql -u username -p [database] < [sql_file_path]
导入数据库
导入数据库

这里需要注意的是,要导入的数据库文件要包含正确的路径,比如:mysql -u root -p example2 < /home/file.sql。

导出数据库

MySQL可以导入SQL文件到数据库,那么它当然也可以将数据库导出为SQL文件。本文主要讲述在linux系统中输入命令语句的方式导出数据库,如果更喜欢使用web操作的方式备份数据库,可参考phpmyadmin导出数据库教程

无需登录MySQL,直接运行以下命令:

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

我们可以选择输出SQL文件的路径,如不包含路径则保存在当前所在目录。可以使用ls命令来检查文件夹中是否含有file.sql文件:

导出数据库
导出数据库

运行该命令时,将提示输入MySQL的root用户密码。

此命令必须由系统的root用户运行或具有sudo权限的用户运行。

备份数据库

MySQL有一个“mysqldump”工具,可用于在MySQL实例中备份数据库,该工具使用起来非常的方便。

其实备份数据库与前面的导出数据库非常类似,但使用此工具可以对所有的现有数据库进行备份。

以root用户或具有sudo权限的用户身份运行以下命令:

$ sudo mysqldump -u root -p --all-databases> alldatabases.sql
备份所有数据库
备份所有数据库

设置MySQL不区分大小写

默认情况下,在MySQL的表名中区分大小写。为了便于操作,我们需要设置MySQL不区分大小写。

首先,停止MySQL服务:

$ sudo systemctl stop mysql

如果使用CentOS,则使用如下命令:

$ systemctl stop mysqld
停止MySQL
停止MySQL

以root用户或具有sudo权限用户身份,编辑配置文件:

在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

这样,MySQL就不会区分大小写了。

MySQL日志在哪里?

当MySQL服务失败或无法启动时,或者在程序执行过程中有任何异常行为,系统会将错误直接记录在MySQL的运行日志中。

在Ubuntu上,MySQL日志保存在:

/var/log/mysql/error.log

对于CentOS,文件位置为:

/var/log/mysqld.log

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

$ tail /var/log/mysql/error.log
查看MySQL日志文件
查看MySQL日志文件

如果使用CentOS:

$ tail /var/log/mysqld.log

通过运行日志,将能够查看MySQL服务器发生的所有事情。

另外,可以将“-f”参数置于tail命令之后,这样可以连续查看日志的最新内容。

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

卸载MySQL

对于Ubuntu,我们使用APT软件包管理器。执行如下命令卸载:

$ sudo apt remove mysql
卸载MySQL
卸载MySQL

在CentOS上,程序包管理器是YUM,以root用户身份使用以下命令:

$ yum remove mysql-community-server
删除MySQL
删除MySQL

结论

MySQL是一个非常流行的关系型数据库管理系统。它功能强大且易于使用,收到广大开发者的喜爱。通过本文,介绍一些MySQL的一些基本操作知识,希望对您有所帮助。

原创文章,作者:牛奇网,如若转载,请注明出处:https://www.niuqi360.com/lamp-config/mysql-linux-beginners-tutorial/

发表评论

登录后才能评论