Da ja doch einige große Unternehmen MySQL nutzen kann ich mir eigentlich nicht vorstellen dass es so schlecht ist wie du beschreibst.
Naja, sagen wir es mal so: von allen Alternativen ist MySQL wirklich die Schlechteste. Mit der Version 8.0 haben sie zwar aufgeholt, aber es fehlen immer noch viele Sachen, die man in anderen Datenbank (wie Postgres) letztendlich als selbstverständlich erachtet. Siehe z.B. hier:
https://stackoverflow.com/a/8182996
Die meisten Unternehmen nehmen MySQL "weil's halt da ist" und überlegen nicht wirklich, bzw. die Entscheidungsträger können die technischen Konsequenzen oft gar nicht abwägen. Und wenn's alle anderen machen, kann's ja so schlecht nicht sein...
Dass die bei den meisten Domain-Hoster nur MySQL als Datenbank zur Verfügung stellt hat da sicherlich seinen Teil beigetragen.
Außerdem war Postgres lange nicht für Windows verfügbar. Man kann von Windows halten was man will, aber es ist halt immer noch das dominante Betriebssystem auf dem Desktop - früher noch mehr als heute. Und im Zweifelsfall hat der Entwickler dann halt eine Datenbank genommen, die unter Windows (leicht) installierbar war.
Was ich eine nette Anekdote finde: der Execution Plan in MySQL war - wenn man andere Datenbanken kennt - eigentlich immer ein Witz. Letztendlich stand da nie wirklich viel drin.
Mit der Version 8.0.20 (einem Bugfix Release! - die Versionspolitik von MySQL finde ich auch etwas fragwürdig) wurde die Ausgabe und der Detailgrad gründlich überarbeitet und sieht jetzt aus wie der von Postgres
Andererseits ist MySQL auch nicht ganz sooo schlecht wie akretschmer das immer hinstellt (check constraints, window functions, rekursive Abfragen sind z.B. in 8.0 endlich dazu gekommen - in Postgres und anderen Datenbanken hat man das schon seit Jahrzehnten verwenden können).
Es scheint so, dass sich die Qualität nach der Übernahmen durch Oracle etwas verbessert hat (sowas wie der berüchtigte Post von Monty
Oops, we did it again kommt wohl nicht mehr vor), aber ich habe immer noch das Gefühl, dass da deutlich weniger getestet wird als bei Postgres. Wie gesagt, dass ist ein Gefühl - glücklicherweise muss ich so gut wie gar nicht mehr mit MySQL arbeiten.
Auf HackerNews hat es vor ein paar Monaten mal eine Diskussion gegeben warum die Binaries von Postgres um so vieles kleiner sind als die von MySQL (z.B. mysqld.exe 45MB, postgres.exe 7MB - ich glaube unter Linux ist das Verhältnis ähnlich). Viele waren der Meinung, dass es einfach daran liegt, dass die Postgres Entwickler wesentlich mehr Wert auf Code-Qualität legen und eben alte Zöpfe die nicht mehr sinnvoll gepflegt werden können auch abschneiden und neu machen.
Irgendjemand hat mal die Entwicklungsansätze so verglichen: bei MySQL wird zuerst darauf geachtet, dass die Dinge schnell sind (weil sich das im "Marketing" besser macht). An zweiter Stelle kommt die Korrektheit der Implementierung, und als Letztes dann die Sicherheit der Daten. Bei Postgres liegt die allererste Priorität auf der Sicherheit der Daten, dann kommt die Korrektheit, und wenn alles stabil und richtig läuft wird es schneller gemacht.