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

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

对于CentOS系统,MySQL默认没有被包含在其软件仓库中,我们需要将MySQL添加到CentOS的软件仓库。首先,切换到root用户,然后将MySQL添加到软件仓库。
$ su $ yum install https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm

输入”Y”继续。
现在,就可以在CentOS上安装MySQL。执行以下命令安装MySQL:
$ yum install mysql-community-server

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

通过上述查询,我们能够看到MySQL的版本信息,这意味着MySQL已正确安装并可以使用。
MySQL在Linux的安装路径?
通常,MySQL的目录位于以下位置:
/ usr / bin
MySQL的数据库存储位置。通常位置如下:
/ var / lib / mysql /
最后,如果想知道所有已安装的MySQL文件的位置,则可以运行以下命令:
对于Ubuntu:
$ dpkg -L mysql-server

MySQL配置文件(my.cnf)位置?
如果使用Ubuntu,则可以在以下路径中找到MySQL配置文件:
/etc/mysql/my.cnf
对于CentOS,则路径如下:
/etc/my.cnf
如果要查看my.cnf的内容,可以使用cat命令:
$ cat /etc/mysql/my.cnf

我们可以使用文本编辑器(例如nano或vim)编辑my.cnf的内容。对于Ubuntu,大多数配置位于:
/etc/mysql/conf.d/
这里需要提醒的是,如果要编辑配置文件,请首先创建文件的备份以备不测。
启动MySQL
现在,已在系统上成功安装MySQL,我们需要启动MySQL。
要开始运行MySQL服务,执行以下命令:
$ sudo systemctl start mysql
如果使用的是CentOS,请以root用户执行以下命令:
$ systemctl start mysqld

如果没有返回任何内容,则意味着服务已成功启动。
如果现在重新启动系统,就会发现MySQL并未运行。这是因为,我们需要设置MySQL能在系统启动时自动启动。
执行以下命令,开启MySQL随系统启动自动启动:
$ sudo systemctl enable mysql
如果使用的是CentOS:
$ systemctl enable mysqld

现在,如果重新启动系统,我们就会发现,MySQL已经随系统启动自动运行。
检查MySQL运行状态
我们可以通过如下命令,检查MySQL是否正在运行:
$ sudo systemctl status mysql
对于CentOS,该命令应以root用户身份运行,如下所示:
$ systemctl status mysqld

我们看到输出结果显示的“active(running)”,说明MySQL正在运行。
否则,表明它处于非激活状态或已停止运行。

检查MySQL的运行端口
默认情况下,MySQL使用的端口是3306。要在Linux上检查MySQL使用的端口,可以使用以下两个命令之一来检测:
$ lsof -n | grep'mysql。* TCP'
或者,也可以使用如下命令:
$ netstat -tlpn | grep mysql

重启MySQL
如果我们对MySQL的设置进行任何的更改,都需要重新启动MySQL使服务生效。
要重启MySQL,需使用以下命令:
$ sudo systemctl restart mysql
对于CentOS,使用root用户运行如下命令:
$ systemctl restart mysqld

如果屏幕没有输出任何内容,则表示该服务已成功启动。
设置MySQL的root密码
MySQL的root用户对所有数据库拥有所有权。因此,我们必须为root用户设定一个足够复杂的密码。
root用户可以执行的操作:
- 创建新用户;
- 管理用户的权限。
我们将使用mysql_secure_installation脚本设置root用户的密码,以及进行其他配置。
在Ubuntu中,执行以下命令:
$ sudo mysql_secure_installation
在CentOS上,虽然使用相同的命令,但要以root用户身份运行。
$ mysql_secure_installation
第一个问题询问是否激活密码验证插件。然后,选择密码验证策略的级别。

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

之后,插件将评估密码的强度。键入Y继续。
之后,系统将询问一些其他的配置问题,一般情况下输入”Y”就可以了。

检查MySQL版本
执行以下命令:
$ mysql --version

在这里,可以看到已安装的当前版本。
为MySQL上创建用户
为了保障MySQL服务器的安全,牛奇网建议为每个应用程序或数据库创建专门的用户。
首先以root用户身份登录MySQL:
$ sudo mysql -u root -p
如在CentOS系统上:
$ mysql -u root -p

运行命令时,将要求输入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;

但是,表中可能有数百万或数十亿条记录,这样我们就要根据我们需要的条件来读取数据。
为此,我们使用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命令的基本语法如下:
> 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

以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

如果使用CentOS:
$ tail /var/log/mysqld.log
通过运行日志,将能够查看MySQL服务器发生的所有事情。
另外,可以将“-f”参数置于tail命令之后,这样可以连续查看日志的最新内容。
$ tail -f /var/log/mysqld.log
卸载MySQL
对于Ubuntu,我们使用APT软件包管理器。执行如下命令卸载:
$ sudo apt remove mysql

在CentOS上,程序包管理器是YUM,以root用户身份使用以下命令:
$ yum remove mysql-community-server

结论
MySQL是一个非常流行的关系型数据库管理系统。它功能强大且易于使用,收到广大开发者的喜爱。通过本文,介绍一些MySQL的一些基本操作知识,希望对您有所帮助。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/mysql-linux-beginners-tutorial/