< 返回新闻公共列表

如何在Ubuntu操作系统上配置MySQL服务器?

发布时间:2023-03-31 15:08:58

在本中,小编将讲解如何在Ubuntu操作系统上配置MySQL服务器?它描述了如何设置root密码、创建数据库以及为数据库添加用户。该文章更详细地检查了MySQL配置,因此我们可以调整其配置并做好准备,以防出现问题。


如何在Ubuntu操作系统上配置MySQL服务器?.png


一、查找配置文件

默认情况下,我们可以在以下位置找到MySQL配置文件:/etc/mysql

但是,如果它们不存在,我们可以使用mysqld来查找配置。运行以下命令:$ /usr/sbin/mysqld --help --verbose

冗长响应的第一部分描述了启动服务器时可以发送到服务器的选项。第二部分显示服务器编译期间的配置集。

在输出的开头附近,找到类似于以下示例的几行:

Default options are read from the following files in the given order:

/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

服务器检查该列表,直到找到配置文件。


二、my.cnf 配置文件

打开并查看/etc/mysql/my.cnf文件。

以#开头的注释行记录了不同设置的使用。它们显示有关日志文件、数据库文件和其他详细信息的位置的详细信息。

配置组

配置文件包含方括号中带有单个单词的行,例如[client]或[mysqld]。这些部分是配置组。它们使重要的配置元素对读取配置文件的程序更加可见。

从技术上讲,服务器配置部分是一组工具。这包括服务器 ( mysqld)、客户端 ( mysql) 和其他工具。这些程序在my.cnf中查看它们应该如何表现。

客户端配置部分控制mysql客户端,该mysqld部分控制服务器配置。


三、日志文件

日志文件是开始对任何程序进行故障排除的最佳位置。默认情况下,MySQL将其日志文件存储在以下目录中:/var/log/mysql

我们可能需要使用sudo来获取该目录中的文件列表。

如果在默认目录中找不到MySQL日志,请检查MySQL配置。查看my.cnf文件并查找一行log_error,如:

log_error = /var/log/mysql/error.log

如果我们没有看到这样的一行,请在mysqld部分创建一个,这样 MySQL就可以使用它自己的错误日志。使用示例中的位置,创建/var/log/mysql目录(如果尚不存在)。然后,重新启动MySQL以进行更改。

确保用户可以通过控制mysql进程写入所选的日志目录。运行该进程的用户在my.cnf中mysqld的用户配置值中定义。


四、网络设置

客户端和服务器配置部分下可能都有“端口”设置。服务器部分下的端口控制服务器监听的端口。默认端口是3306但是,我们可以更改它。

客户端部分的端口告诉客户端默认连接到哪个端口。我们通常希望两个端口设置匹配。

如果我们使用默认设置,将不会在配置文件中看到端口条目。如果要更改端口,请在适当的类别中添加以下行:

[client]

port = 3306

[mysqld]

port = 3306

另一个要查找的网络设置是绑定地址值。这通常设置为本地主机的地址127.0.0.1。通过绑定到本地主机,服务器确保没有人可以从本地计算机外部连接到它。

如果我们在与自己的应用程序不同的计算机上运行MySQL服务器,我们应该绑定到一个远程可访问的地址而不是本地主机。更改绑定地址设置以匹配我们的公共IP地址。出于安全原因,我们应该使用网络上的后端IP地址。

如果我们没有看到绑定地址条目,应该将一个放入mysqld类别以帮助控制对服务器的访问:

[mysqld]

$ bind-address = 127.0.0.1

请记住在设置数据库用户时考虑客户端的主机名,并在运行时提供防火墙访问权限iptables。


五、mysqld和mysqld_safe

在幕后,有两个版本的MySQL服务器,mysqld和mysqld_safe. 两者都读取相同的配置部分。但是,mysqld_safe启用更多安全功能的启动可以更轻松地从故障排除中恢复。

两者mysqld都读取mysqldmysqld_safe部分中的配置条目。如果包含mysqld_safe部分,则只有mysqld_safe使用这些值。

默认情况下,MySQL服务会启动mysqld_safe,这是合适的。


六、mysql管理员

该mysqladmin工具允许我们从命令行执行一些本文未涉及的管理功能。稍后我们可能会更深入地探索该工具以了解它的功能,尤其是当我们需要构建脚本来执行诸如检查服务器状态或创建和删除数据库等功能时。


七、备份

除了通常的备份整个计算机方法之外,我们还有以下选项来备份数据库。主要的两个选项是复制数据库文件或使用mysqldump.

文件复制

默认情况下,MySQL在其数据目录/var/lib/mysql中为每个数据库创建一个目录。

找到数据目录后,请稍等片刻,然后再复制它。当数据库服务器处于活动状态时,它会将新值写入表。不要中断此过程以避免可能损坏我们的备份。

为确保我们干净地复制了数据库文件,应该在复制之前完全关闭 MySQL服务器。

我们可以在复制期间将数据库锁定为只读。完成后,释放锁。这样,我们的应用程序仍然可以在您备份文件时读取数据。

通过从命令行运行以下命令将数据库锁定为只读:

$ mysql -u root -p -e "FLUSH TABLES WITH READ LOCK;"

完成后运行以下命令解锁数据库:

$ mysql -u root -p -e "UNLOCK TABLES;"

MySQL客户端选项-e告诉客户端在引号中运行查询,就好像我们在 MySQL® shell中输入它一样。

如果您在脚本中编写这些命令,则可以将密码放在引号中,-p两者之间没有空格,类似于以下示例:

$ mysql -u root -p"password" -e "FLUSH TABLES WITH READ LOCK;"

$ mysql -u root -p"password" -e "UNLOCK TABLES;"

出于密码安全原因,请确保对该文件设置权限以限制读取访问。


八、mysql转储

备份数据库的另一种方法是使用该mysqldump工具。不是直接复制数据库文件,而是mysqldump生成一个代表数据库的文本文件。默认情况下,文本文件包含用于重新创建数据库的SQL语句列表,但我们也可以将数据库导出为其他格式,如.CSV或.XML。

生成的语句mysqldump直接进入标准输出。我们可以通过在命令行中运行以下命令来指定a以重定向输出:

$ mysqldump -u root -p demodb > dbbackup.sql

此命令指示在SQL语句中mysqldump重新创建demodb数据库并将它们写入文件dbbackup.sql。请注意,用户名和密码选项的功能与 MySQL客户端相同,因此我们可以-p在脚本后直接包含密码。

从mysqldump恢复

恢复mysqldump数据库类似于创建转储的方式,但我们使用的是,mysql而不是mysqldump,如以下恢复命令所示:

$ mysql -u root -p demodb < dbbackup.sql

另请注意,<尖括号会改变方向。这会将命令从重定向其输出切换为从现有文件中提取输入。该输入被发送到mysql命令,导致指令重新创建数据库。

默认情况下,生成的SQL语句会添加到现有数据库表中,而不是覆盖它们。如果要在现有数据库上恢复备份,则应先删除数据库表,或者删除并重新创建数据库本身。我们可以通过将选项$ --add-drop-table与创建mysqldump. 这导致mysqldump向它写入的备份文件添加一个命令,该命令在重新创建表之前删除表。


九、数据库引擎

数据库引擎是在幕后工作的进程,从文件写入和读取数据。如果我们想运行针对特定数据库引擎优化的应用程序,只需要了解这一点。

需要表的应用程序按需创建它们并自动创建引擎类型。要查看数据库表使用的引擎,可以在MySQL shell中运行以下命令,将demodb更改为数据库的名称:

$ SHOW TABLE STATUS FROM demodb;

选择引擎

理想情况下,我们不需要选择引擎。如果对MySQL不是很熟悉,请允许应用程序默认选择一个。如果我们正在编写应用程序,请使用默认引擎,直到对自己的选择感到满意为止。

MySQL最常用的两个数据库引擎是MyISAM和InnoDB. MySQL 5.1 版及更早版本的默认数据库引擎是MyISAM,而InnoDB是从 MySQL 5.5 版开始的默认数据库引擎。

MyISAM

因为MyISAM在 MySQL中已经默认了一段时间,所以它是两个主要引擎中最兼容的选择。某些类型的搜索MyISAM比InnoDB. 尽管它是两者中较旧的一个,但它可能是给定应用程序类型的最佳选择。

InnoDB

InnoDB比数据库更容错,MyISAM并以更小的数据库损坏风险处理崩溃和恢复。

如果我们的应用程序需要InnoDB并且使用的是MySQL 5.1或更早版本,则my.cnf配置文件中可能没有任何设置。如果我们在没有太多内存的服务器上运行,这可能是个问题。

以下设置可以让我们在具有256兆RAM的共享服务器上开始使用 InnoDB:

innodb_buffer_pool_size = 32M

innodb_log_file_size = 8M

innodb_thread_concurrency = 8

innodb_file_per_table

将它们添加到配置文件的[mysqld]部分。同样,这些只是粗略的指南。


以上是“在Ubuntu操作系统上配置MySQL服务器”相关教程,希望能帮助到大家!


/template/Home/Zkeys724/PC/Static