请不要ibdata1文件-

MySQL 101:在Ubuntu上安装,护理和喂养和喂养

如果您有15分钟,我们可以向您展示基本MySQL管理的绳索。

警告:学习MySQL实例的护理和喂养不授予与实际海洋哺乳动物的知识或安全互动。
扩大 /警告:学习MySQL实例的护理和喂养不授予与实际海洋哺乳动物的知识或安全互动。
甲骨文

其中一个任务几乎任何Sysadmin经常遭遇是MySQL数据库服务器的关心和送餐。您可以在任何内容中建立一个整个职业,但这一主题 - 使您成为一个DB管理员,而不是像你真正的那样谦逊的Sysadmin,但对于今天来说,我们只是为了涵盖基础知识。

在本指南中,我们将使用Ubuntu Linux作为底层操作系统——但是最多在这些步骤和提示中,您可以在几乎任何操作系统或分发时都是相同的或广泛相似的,您可以安装MySQL。

安装MySQL

在一个新的Ubuntu实例上安装MySQL非常简单:sudo apt更新如果有必要,然后安装mysql-server而你就去了比赛。下载并安装包后,mysql自动触发(将在每个系统重新启动后)触发。

什么是明显的就是你的方式一旦它开始运转。答案在这里——至少在Ubuntu或debian派生的发行版上——就在文件中/etc/mysql/debian.cnf..这个文件记录了自动创建的mysql超级管理员帐户名和密码;名字是Debian-sys-maving,密码是在安装时随机生成的(因此,在每个系统上是不同的)。

一旦您了解密码Debian-sys-maving在您的本地系统上,您可以登录到您的新MySQL服务器Mysql -u debian-sys-maint -p-系统会问你密码,谢谢- p你指定的标志,然后你在!

要离开MySQL控制台,您只能出口;在任何时间。(注意:输入控制台的命令必须以分号结尾。)

创建数据库和用户

您绝对不希望您的日常使用MySQL-Icions应用程序击中数据库,而不是您 - 使用-Sysadmin登录其控制台使用Debian-sys-maving.因此,让我们快速查看创建新数据库和新用户帐户或两个以管理它的过程所涉及的过程。

要查看MySQL实例中运行的数据库列表,请使用该语句显示数据库;.这非常简单,并确实是你想到的新系统,你会看到Information_Schema.performance_schema.SYS.,mysql.这些数据库是MySQL服务器本身的“内脏”,在大多数情况下不应该像处理普通数据那样直接摆弄它们。

可以登录MySQL数据库的用户可以在其中找到mysql.user表格,可以询问从mysql.user中选择*(或使用mysql;从用户选择*;如果你喜欢)。不幸的是,有很多列在mysql.user表格 - 在没有水平文本包装的情况下适合屏幕的太多,导致无泥落。

要想获得更有用、更少混乱的结果,不妨尝试一下选择只需列在此案例中,您实际上是兴趣的,宿主用户.现在你的命令是从用户中选择主机、用户你的结果很好看:

mysql >使用mysql;
读取表信息以完成表和列名
你可以关闭这个功能来快速启动-A

数据库已更改
MySQL>选择主机,用户来自用户;
+---------------+------------------+
|主机|用户|
+---------------+------------------+
| localhost | debian-sys-maint |
| localhost | mysql。会话|
| localhost | mysql。SYS.|
| localhost | root |
+---------------+------------------+
4行设置(0.00秒)

如果你真的是一个MySQL新手,你可能想知道什么宿主专栏是关于。答案有点令人沮丧——mysql的用户帐户是独立的每个主机,用户可能从……这意味着你可以有多个“用户”与相同的用户名!

更让人困惑的是,每一行用户表有自己的密码字段 - 意味着同一用户名称根据他们访问MySQL服务器的IP地址,可以有不同的密码和特权。

默认情况下,MySQL只向localhost.界面 - 含义只有一个可能的主机可以访问它 - 因此它是默认配置的mysql实例上的moot point。但是,如果您进入商业支持(或决定在您自己的基础架构中获得更复杂),则您将遇到具有专用DB和应用程序服务器的基础架构(例如,运行MySQL的一台服务器,以及另一个运行Nginx或Apache)。在这种情况下,区别吉姆在当地系统和吉姆在webserver上确实变得非常重要!

要添加一个新的用户帐户,可以直接发布一个标准更新查询mysql.user表本身 - 但这是一个“牛仔”在一般使用中练习和皱眉。相反,你应该使用mysql授予命令,例如:

Mysql > grant all on *。* to 'jim'@'localhost' identified by 'very strong-password ';

这应该是相对清楚的——我们创建了一个名为的用户吉姆,必须从那里登录localhost.仅限,谁的密码是very-strong-password.我们授予所有对所有数据库和表的权限*。*- 我们的新用户。你可能会想吉姆@ localhost.现在是一个有效的超级管理员,但情况并非如此——有一些相当不寻常的操作需要真正的超级用户权限,默认情况下Debian-sys-maving有。

这给我们带来了一个潜在的严重的安全问题帐户根本没有MySQL中的密码。这意味着任何可以成为的人在底层系统中可以简单地输入mysql在根提示符并生动到数据库服务器的root访问权限。如果那不是你对的东西,你会想要设置密码账户本身。

要更改MySQL用户帐户的密码,我们可以使用改变用户命令:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'super-strong-password';
查询OK, 0行受影响(0.00秒)

创建新数据库类似地简单,创建数据库dbname.和presto,你有一个名为的新数据库dbname.有权限的MySQL用户*。*将默认情况下与新数据库一起使用权限,但这不是您希望应用程序访问它的方法。

一个非常常见的做法是创建与数据库名称匹配的用户名,并且仅在该数据库上具有权限 - 这是您将向您的应用程序提供的帐户(例如,Web应用程序等Web应用程序)。

mysql>授予dbname上的全部。*以“另一个密码”标识的'dbname'@'localhost';
查询OK, 0行受影响,1个警告(0.00秒)

请记住——您刚刚创建的新帐户只能从您在.如果你需要从账户工作任何主机名,可以使用MySQL通配符

mysql>授予dbname上的所有。*到'另一个密码'标识的'dbname'@'%';
查询OK, 0行受影响,1个警告(0.00秒)

在这种情况下dbname用户帐户将能够登录任何网络位置—当然,假设网络位置可以到达MySQL。也可以使用例如,以更有限的方式使用通配符'dbname'@'192.%'是一个可以从任何IP地址登录的帐户192.例如,192.168.0.100

将mysql暴露给其他机器

在早期版本的Debian和Ubuntu中,MySQL配置文件位于/etc/mysql/my.cnf..这改变为Conf.D.Ubuntu 18.04及更高版本的样式设置;旧的MySQL配置文件位于/etc/mysql/mysql.conf.d / mysqld.cnf现在。

我们可以看到MySQL将有效地限于localhost.只靠看bind-address节在mysqld.cnf

Jim @ locutus:/etc/mysql/mysql.conf.dh grep -b3 bind-address *
mysqld.cnf - #
mysqld.cnf-#默认是只监听,而不是跳过网络
mysqld.cnf-#localhost更兼容,不太安全。
mysqld.cnf: bind-address = 127.0.0.1

如果我们想为其他机器提供MySQL服务,我们需要改变这一点bind-address-通过重写另一个文件或通过编辑mysqld.cnf直接。不管怎样,你都需要指定更广泛的bind-address由于MySQL本身将默认为绑定,而不是完全评论斯坦扎localhost.没有明确的指示。

如果您只希望MySQL侦听特定接口,则可以指定该接口的IP地址 - 例如,bind-address = 192.168.0.10.但这有一些相当恶劣的暗示,从这个事实开始堵塞与...的连接localhost..更常见的是,您将通过指定“假”IP 0.0.0.0来完全nerf:Bind-Address = 0.0.0.0

使用0.0.0.0.作为你的bind-address(然后重新启动MySQL)将暴露MySQL所有可用接口,包括localhost。如果这是比您想要的更广泛的曝光,您需要创建系统防火墙规则以进一步限制访问权限。你应该是什么不是做的是依靠吗宿主列的用户表作为访问机制—将MySQL暴露给整个Internet是不安全的,无论您的密码有多强!

如果您正在使用查维斯,语法是这样的:UFW允许从1.2.3.0/24到任何端口3306.这允许以1.2.3开始的任何IP地址访问MySQL服务器。或者你可能更喜欢UFW允许在eth0上输入任何端口3306允许任何联系进入eth0(但不是任何进来的人eth1或其他接口)。

如果您正在使用iptables,语法非常相似——例如,iptables -a输入-p tcp --dport 3306 -s 1.2.3.0/24 -J接受但你也需要知道如何,在哪里,何时保存和加载你的iptables规则集,很不幸这超出了我们今天的范围。

一旦你改变了bind-address创建任何必要的防火墙规则来限制谁可以敲打你新公开的MySQL实例,你可以使用systemd's重启MySQLsystemctl.命令:

jim @ locutus:〜$ sudo systemctl重新启动mysql

小心从来没有将MySQL公开到互联网,如果你改变你的话bind-address创建(并测试!)系统防火墙规则,防止它变得如此宽泛重新启动MySQL,并实际应用更自由bind-address设置。

120年读者评论

  1. 考虑到您的背景,我有点惊讶没有提到在ZFS上使用MySQL进行快照备份:)

    如果您知道MySQL在ZFS上,也可以进行一些简单的优化,尽管这肯定是它将超出本文的范围。

    我期待看到更多这样的东西!
    |注册了49个帖子
  2. 所以…为什么是MySQL,而不是更好的F/OSS MariaDB,毕竟是在Oracle怪物买下MySQL之后从MySQL分叉出来的。
    |注册了22439个帖子
  3. 太棒了!现在在Unbuntu上为Postgres做一个。
    |注册了684个帖子
  4. Drizzt321.写道:
    所以…为什么是MySQL,而不是更好的F/OSS MariaDB,毕竟是在Oracle怪物买下MySQL之后从MySQL分叉出来的。


    因为大多数情况下,MySQL仍然有更好的名称识别。

    从字面上看,唯一的改变是“apt install mysql-server”变成了“apt install mariadb-server”。每个命令名、每个参数语法、所有其他内容(在这个简单的教程中)都没有改变。

    另外,就像我不喜欢Oracle ...... IMO(以及我的惊喜),自收购以来,他们对MySQL非常好的管家。

    最后编辑吉姆盐兵2021年6月11日周五下午6:09

    13239帖子|挂号的
  5. sdwilsh.写道:
    考虑到您的背景,我有点惊讶没有提到在ZFS上使用MySQL进行快照备份:)

    如果您知道MySQL在ZFS上,也可以进行一些简单的优化,尽管这肯定是它将超出本文的范围。

    我期待看到更多这样的东西!


    我们可能晚一点到那里。但是,尽管我非常喜欢ZFS,但我不能总是在需要数据库的地方使用它,您也不能。:)

    (即使你依靠ZFS MySQL二进制文件的复制,并且不介意影响潜在的启动时间长,由于期刊复苏InnoDB表上如果你把快照在一个尴尬的时间,而不需要担心MyISAM不是崩溃一致,和其他一些东西除了…你仍然需要知道这首曲子的所有内容。)
    13239帖子|挂号的
  6. Postgres +1!
    5个帖子|挂号的
  7. 是一个更全面的写在工作中?我运行几个数据库,作为一个新手,并希望备份数据库(即表,索引或索引,触发器等)独立于数据,并能够备份数据增量(可能每天),然后清除/截断写入备份的条目。
    |注册了1741个帖子
  8. 吉姆盐兵写道:
    Drizzt321.写道:
    所以…为什么是MySQL,而不是更好的F/OSS MariaDB,毕竟是在Oracle怪物买下MySQL之后从MySQL分叉出来的。


    因为大多数情况下,MySQL仍然有更好的名称识别。

    从字面上看,唯一的改变是“apt install mysql-server”变成了“apt install mariadb-server”。每个命令名、每个参数语法、所有其他内容(在这个简单的教程中)都没有改变。

    此外,尽管我不喜欢甲骨文……IMO(让我非常惊讶的是)自从MySQL被收购以来,他们已经成为了相当好的MySQL标准。


    为什么是MySQL而不是PostgreSQL呢?

    回来后,当我仍然为数据分析做一些SQL时,我发现了MySQL Maddening的特质和局限性。

    如果可以自由选择建立一个新的sql服务器,有什么理由选择MySQL而不是PostgreSQL?

    最后编辑oulenz上午9点2:45:下午2:45

    |注册了291篇帖子
  9. 标记线失败……

    请不要ibdata1文件-

    请不要in ibdata1文件?
    |注册了1741个帖子
  10. 发布时,我正在阅读Ars期间,在一个Pi上构建一个Ubuntu web服务器。我第一次使用这种风格的Unix,所以这是最及时的一篇文章!
    |注册了463个帖子
  11. 这篇文章是一个很好的例子,说明了为什么能够支持文章是一个好主意。
    486帖子|挂号的
  12. 好东西。我倾向于关闭mysql的历史函数(使用mysql_histfile = / dev / null),因为否则您在MySQL控制台中创建的所有这些用户密码都以明文存储在那里。
    20467个帖子|注册
  13. 只有几个我会添加的事情就是它真的值得使用网关/堡垒主机连接到数据库服务器并锁定远程SSH访问它们的用户。'管理'@'%'是一个完全危险的区域。此外,Percona XtraBackup是一种非常好的工具,用于做企业级数据库的热备份,比MySqldump的一些方面更方便。
    1帖|注册
  14. 是一个更全面的写在工作中?我运行几个数据库,作为一个新手,并希望备份数据库(即表,索引或索引,触发器等)独立于数据,并能够备份数据增量(可能每天),然后清除/截断写入备份的条目。


    这个问题问得好:但是只要你上网搜索一下,就能找到一些关于这个话题的好文章。
    134帖子|挂号的
  15. mysql_secure_installation呢?
    |注册了17个帖子
  16. 标记线失败……

    请不要ibdata1文件-

    请不要in ibdata1文件?

    不。
    38868帖子|注册
  17. 伟大的文章。

    我们可以得到更多这种东西吗?类似于纽伯管理员和保安人员的一些普通企业工具的基本管理中的备忘单或崩溃课程?就像这篇文章一样短,甜蜜的东西。而不是不得不坐下来读一本电话尺寸技术手册,这些手册覆盖着许多不捕获的领域,这些领域不受专门在特定领域的情况下?或者必须在您只需要知道如何操作少数基本功能时观看教程的时间?

    我知道这不是一个入门网站,但如果我能在浏览新闻的同时快速学到一些相关知识,这对我来说是一个胜利。
    |注册了73个帖子
  18. 坦克写道:
    吉姆:
    谢谢你写这篇文章,但我忍不住想知道。

    为什么不通过Docker做到这一点?

    不可否认,我问这个是因为我花了每个工作时间/分钟/秒
    埋藏在用K8S和Docker做所有这些东西的美妙世界,
    所以也许我不是正确的受众。

    但是通过docker做这件事确实提供了拉出容器映像和
    有一致的部署。

    ymmv.


    好吧,这应该是,我认为,最简单的介绍。也许吉姆可以/将来会继续进入集装箱化。容器很酷,但也有点复杂。您开始进入必须配置时的问题。MySQL使用在容器外部的存储。您可以在计算机内部具有虚拟私有LAN的并发症,每个容器都具有自己的IP地址。然后,您必须允许通过容器引擎(Docker或其他)连接到容器。

    当然不是不可能在一篇文章中涵盖-不是那么复杂。但是比直接在操作系统上运行单个实例稍微复杂一些。
    5625帖子|挂号的
  19. 至少几年前,MySQL对我正在切换PostgreSQL的子查询和其他问题存在一些问题。也许事情已经改变,但PostgreSQL是一个很好的DB系统。

    当Oracle购买MySQL时有点有关。MySQL如此占据主导地位,难以忽视。
    99帖子|挂号的
  20. 有趣的提示 - 您实际上可以在WSL 2下运行的Ubuntu上运行MySQL。它不是直接(WSL没有系统),但这是一个有趣的测试。
    |注册了1016个帖子
  21. Drizzt321.写道:
    所以…为什么是MySQL,而不是更好的F/OSS MariaDB,毕竟是在Oracle怪物买下MySQL之后从MySQL分叉出来的。


    同意了。MariaDB是一个性能更好的数据库,开始时没有增加太多复杂性。

    更不用说甲骨文。
    6个帖子|挂号的
  22. 伟大的起动!

    注意:从MySQL 5.7开始(在默认的发行版;有些Linux发行版会改变这个),默认情况下你需要发出
    代码:
    创建用户jim@localhost IDENTIFIED BY 'mypassword'

    之前你可以
    代码:
    授予*的所有权限*。*到jim @ localhost


    在过去,如果用户不存在,GRANT命令会自动创建用户。出于安全原因更改了这一点:如果您将权限授予一个不存在的用户(或者授予一个不存在的主机上的现有用户!),则该用户将被静默创建没有密码!

    例子:
    代码:
    授予*的所有权限*。*到jim @ localhostIDENTIFIED BY 'mypassword';
    授予*上的所有权限。*到jim@192.168.0.1;
    ——result: Jim从192.168.0.1连接不需要密码!


    看到 https://dev.mysql.com/doc/refman/5.7/en…reate_user 想要查询更多的信息。
    |注册了24个帖子
  23. 这很酷,我会很高兴看到更多的教育文章!
    30个帖子|挂号的
  24. 有关备份,请在MySQL shell中查看Util.DumpInstance和Util.LoadDump函数。它做了真正的多线程转储和加载,块的数据更有效地加载,并显示了很好的进度输出。这两个函数还具有一堆有用的选项,如能够仅转储结构,包括用户,并包括/排除特定模式和表。它真的很棒,明显比mysqldump更快。

    MySQL Shell文档在这里: https://dev.mysql.com/doc/mysql-shell/8…chema.html

    最后编辑keithlammers在星期五6月11日,2021 6:48下午

    6个帖子|挂号的
  25. 吉姆盐兵写道:
    Drizzt321.写道:
    所以…为什么是MySQL,而不是更好的F/OSS MariaDB,毕竟是在Oracle怪物买下MySQL之后从MySQL分叉出来的。


    因为大多数情况下,MySQL仍然有更好的名称识别。

    从字面上看,唯一的改变是“apt install mysql-server”变成了“apt install mariadb-server”。每个命令名、每个参数语法、所有其他内容(在这个简单的教程中)都没有改变。

    此外,尽管我不喜欢甲骨文……IMO(让我非常惊讶的是)自从MySQL被收购以来,他们已经成为了相当好的MySQL标准。


    当然,也许通常是更好的名称识别......但是你不能用它作为一种让人注意玛丽亚达的机会吗?特别是因为Afaik,即使在这一点上,几乎所有相同的配置/设置/技能都在两者之间是非常便携的。
    |注册了22439个帖子
  26. 很好的实用写作。不久前,正如其他人提到的那样,我用玛丽亚达做了替代品(基本上)。它甚至支持像Tokudb这样的古怪的事情,直到一点时间。

    至于Postgres,我之所以做出这样的改变,是因为我想要整合到一个具有更好JSON支持和其他一流生态系统的平台上。然而,我仍然怀念MySQL提供的不同表/索引系统的灵活性。(MyISAM, InnoDB, Black hole等)我主观地认为MySQL仍然是更好的全能平台。

    再次,真的很好的惊喜,有一种善意的文章。谢谢。
    78个帖子|注册
  27. oulenz写道:
    吉姆盐兵写道:
    Drizzt321.写道:
    所以…为什么是MySQL,而不是更好的F/OSS MariaDB,毕竟是在Oracle怪物买下MySQL之后从MySQL分叉出来的。


    因为大多数情况下,MySQL仍然有更好的名称识别。

    从字面上看,唯一的改变是“apt install mysql-server”变成了“apt install mariadb-server”。每个命令名、每个参数语法、所有其他内容(在这个简单的教程中)都没有改变。

    此外,尽管我不喜欢甲骨文……IMO(让我非常惊讶的是)自从MySQL被收购以来,他们已经成为了相当好的MySQL标准。

    如果可以自由选择建立一个新的sql服务器,有什么理由选择MySQL而不是PostgreSQL?


    1. MySQL托管通常是更便宜的方式。
    2. .NET驱动程序支持PSQL是一个IFFY。
    |注册了155个帖子
  28. 吉姆盐兵写道:
    sdwilsh.写道:
    考虑到您的背景,我有点惊讶没有提到在ZFS上使用MySQL进行快照备份:)

    如果您知道MySQL在ZFS上,也可以进行一些简单的优化,尽管这肯定是它将超出本文的范围。

    我期待看到更多这样的东西!


    我们可能晚一点到那里。但是,尽管我非常喜欢ZFS,但我不能总是在需要数据库的地方使用它,您也不能。:)


    如果您担心ZFS许可证与GPL不兼容,则可以避免GPL。FreeBSD的许可证兼容。

    即使我今天在数据库下没有ZFS,即使我可以确定我将它作为下一个重大升级的一部分。

    加上,FreeBSD有快照还有复制(我一时想不起来了)工具,所以你不用自己动手。我真的很喜欢祖父/父亲/儿子备份策略对于数据库。


    随着PostgreSQL的投票,“ZFS快照&& ZFS发送”是一种更有效的方法来站起来的Pos​​tgreSQL复制,以及场外热备份。
    325篇帖子|注册
  29. 维护MySQL最好的方法是删除它。

    如果您实际上需要关系,酸数据库,请使用PostgreSQL。如果您没有,如果最适合您的用例最适合的No-SQL选项,请使用一个。


    朋友不要让朋友使用mysql。
    1027帖子|挂号的
  30. 杰夫斯写道:
    坦克写道:
    吉姆:
    谢谢你写这篇文章,但我忍不住想知道。

    为什么不通过Docker做到这一点?

    不可否认,我问这个是因为我花了每个工作时间/分钟/秒
    埋藏在用K8S和Docker做所有这些东西的美妙世界,
    所以也许我不是正确的受众。

    但是通过docker做这件事确实提供了拉出容器映像和
    有一致的部署。

    ymmv.


    好吧,这应该是,我认为,最简单的介绍。也许吉姆可以/将来会继续进入集装箱化。容器很酷,但也有点复杂。您开始进入必须配置时的问题。MySQL使用在容器外部的存储。您可以在计算机内部具有虚拟私有LAN的并发症,每个容器都具有自己的IP地址。然后,您必须允许通过容器引擎(Docker或其他)连接到容器。

    当然不是不可能在一篇文章中涵盖-不是那么复杂。但是比直接在操作系统上运行单个实例稍微复杂一些。


    很公平。
    我确实对集装箱正面有偏见,因为我
    我不记得上一次在裸操作系统上安装任何东西是什么时候了。
    工作流程是99.9%的“启动实例,安装docker,
    开始把图片”
    有了容器侧的过程限制支持,它
    还增加了一点额外的安全性,就像你说的,最后
    进出容器的一些额外的开销。

    但要清楚的是,每次出现这样的文章,
    我提醒我们所有人的幸运
    你的写作水平。
    134帖子|挂号的
  31. 我真的错过了这些类型的文章。
    我希望你能重做一些旧的。如果我没记错的话,Ars有一个NAS的3部分指南。
    396帖子|挂号的
  32. 吉姆盐兵写道:
    Drizzt321.写道:
    所以…为什么是MySQL,而不是更好的F/OSS MariaDB,毕竟是在Oracle怪物买下MySQL之后从MySQL分叉出来的。


    因为大多数情况下,MySQL仍然有更好的名称识别。

    从字面上看,唯一的改变是“apt install mysql-server”变成了“apt install mariadb-server”。每个命令名、每个参数语法、所有其他内容(在这个简单的教程中)都没有改变。

    此外,尽管我不喜欢甲骨文……在我看来(让我非常惊讶的是),他们的表现相当不错标准自收购以来MySQL。


    我觉得你的意思是管家这里?
    |注册了3135个帖子
  33. oulenz写道:
    吉姆盐兵写道:
    Drizzt321.写道:
    所以…为什么是MySQL,而不是更好的F/OSS MariaDB,毕竟是在Oracle怪物买下MySQL之后从MySQL分叉出来的。


    因为大多数情况下,MySQL仍然有更好的名称识别。

    从字面上看,唯一的改变是“apt install mysql-server”变成了“apt install mariadb-server”。每个命令名、每个参数语法、所有其他内容(在这个简单的教程中)都没有改变。

    此外,尽管我不喜欢甲骨文……IMO(让我非常惊讶的是)自从MySQL被收购以来,他们已经成为了相当好的MySQL标准。


    为什么是MySQL而不是PostgreSQL呢?

    回来后,当我仍然为数据分析做一些SQL时,我发现了MySQL Maddening的特质和局限性。

    如果可以自由选择建立一个新的sql服务器,有什么理由选择MySQL而不是PostgreSQL?


    有一些软件包,需要它作为后端。IIRC,几个网络论坛包需要它,我认为包括一个ARS在这里运行。

    根据我的理解,部分原因是MySQL/MariaDB在新的数据库连接上非常快,所以打开套接字,发送查询,获得结果,然后再次关闭套接字很简单。它在这方面非常快速,对论坛非常友好,因为在为用户构建显示页面时,这通常涉及许多简短的查找。

    大多数其他数据库需要一些时间来在新的查询套接字上设置。例如,Oracle疯狂地慢了起来,需要年龄促进一个新的连接,到我最后工作的时候,连接集中器软件都是愤怒......它将保持一系列连接池Oracle,然后提供一些漂亮的快速查询套接字,可以很快响应,将传入请求转发到它保持打开的长期连接。

    我的意思是,从根本上说,需要这种软件是非常愚蠢的,甲骨文不应该那么迟钝,但这是我上次处理它的时候,这就是为什么你需要连接池软件如果你想要快速回复。

    让现有的软件适应一个新的数据库可能有点痛苦,对于MySQL来说尤其如此,它在默认情况下做了很多错误的事情,或者至少它做了。早期开发的一切都是关于速度,而正确性并不是他们优先考虑的事情,所以它会做各种愚蠢的事情。但是很多软件都是围绕着这些奇怪的东西设计的,对于这些团队来说,使用通用的数据库引擎并不值得。

    PostgreSQL,很长一段时间非常慢。他们写的代码首先得到正确的东西。数据完整性是他们的工作。然后,后来,他们弄清楚了如何让它快速变得快速。它在大多数事情上比MySQL快速或更快,它具有极其有弹性的底层引擎。

    MySQL从速度开始,从来一直试图增加正确的结果。Postgres后来开始正确,增加速度,结果出色。我建议它作为新用户的默认数据库软件。

    除非你知道你需要别的东西,否则就从那里开始。如果由于某些原因,它最终不能满足您的需求,并且您以后必须迁移到其他的东西,那么您可以非常确定您的数据将完好无损,并且能够完整地导出所有内容。默认情况下是正确的,MySQL必须被引导到那里。

    最后编辑2021年6月11日星期五下午3:53

    7307帖子|挂号的
  34. marius0写道:
    oulenz写道:
    吉姆盐兵写道:
    Drizzt321.写道:
    所以…为什么是MySQL,而不是更好的F/OSS MariaDB,毕竟是在Oracle怪物买下MySQL之后从MySQL分叉出来的。


    因为大多数情况下,MySQL仍然有更好的名称识别。

    从字面上看,唯一的改变是“apt install mysql-server”变成了“apt install mariadb-server”。每个命令名、每个参数语法、所有其他内容(在这个简单的教程中)都没有改变。

    此外,尽管我不喜欢甲骨文……IMO(让我非常惊讶的是)自从MySQL被收购以来,他们已经成为了相当好的MySQL标准。

    如果可以自由选择建立一个新的sql服务器,有什么理由选择MySQL而不是PostgreSQL?


    1. MySQL托管通常是更便宜的方式。
    2. .NET驱动程序支持PSQL是一个IFFY。


    所以,这很有意思。为什么postgres会更贵?我猜答案归结为“MySQL的提供者更多的方式”。
    5625帖子|挂号的
  35. 除了现存的系统需要MySQL,我会跳过MySQL,绕过PostgreSQL,积极切换到蟑螂(与PGWire协议兼容,因此您现有的大多数PostgreSQL客户端互动将会只是工作)。

    蟑螂通过复制和分区使弹性完全不可见。只需要在集群前放置一个负载平衡器就可以了。它在Docker中工作得很好,在NFS上持久化没有问题。

    在可预见的将来,我将始终使用基于服务器的SQL的蟑螂。

    这是一款令人印象深刻的软件。
    我希望它像涌入一样单一的二进制文件,但这只是我贪婪。

    没有关联,除了成为他们开源提供的非常幸福的用户。
    4个帖子|挂号的
  36. 我不是令人害怕的mysql,但肯定会向用户表添加用户是插入查询?

    “对MySQL.USER表的更新查询”
    |注册了1233个帖子
  37. 假设你是root用户,或者可以读取/etc/mysql/debian.cnf,而不是:

    mysqldumpostfixadminp -u debian-sys-maint -p password -h localhost --all-databases> /home/jim/mysqlbackup.mysql

    你可以使用:

    mysqldump --defaults-extra-file = / etc / mysql / debian.cnf --all-databases> /path/to/mysqlbackup.mysql


    这避免了将密码写入进程表,因此它对'ps'输出是不可见的。

    同样地, ...

    Mysql——defaults-extra-file=/etc/ Mysql /debian.cnf

    允许您登录(假设您是root)无需输入密码等。

    或者,创建一个~/.my.cnf文件,如下所示:

    [客户]

    主机=为1.2.3.4
    数据库=一些数据库
    用户= myuser.
    密码= mypass



    默认情况下将使用....
    1帖|注册
  38. 如果您有一个巨大的索引表(如大型文本blob上的全文索引),那么在mysqldump中要小心。这些是非常昂贵的再生和恢复。同样,对于只在灾难情况下才做的事情,担心恢复速度并不重要(除非经常发生故障,而恢复时间对应用程序非常重要)。还要记住mysqldump文件到机器的某个地方
    在|注册的帖子有310篇

你必须置评。

渠道Ars Technica