新闻资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻资讯列表

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

发布时间:2023-04-03 10:11:38

在本中,小编将讲授如何在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服务器”相干教程,希望能帮助到大家!