ubuntuusers.de

Probleme beim Verbindungsaufbau zu MySQL

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

znieh99

Anmeldungsdatum:
7. April 2014

Beiträge: 28

Ich habe auf einer Linux-Maschine einen Apache 2.4 LAMP-Server mit MySQL 5.7 und PHP 7.2 eingerichtet. Und nun habe ich Probleme mit dem Verbindungsaufbau zur Datenbank. Mein PHP-Code:

1
2
3
4
5
6
7
8
<?php
  if ($db = mysqli_connect("localhost", "mysql", "passwort")) {
    echo "Verbindungsaufbau erfolgreich!";
    mysqli_close($db);
  } else {
    echo "Fehler! " . mysqli_connect_error();
  }
  ?>

Dabei bekomme ich folgende Fehlermeldung: Access denied for user 'mysql'@'localhost' (using password: YES)

Meine /etc/mysql/my.cnf:

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

[mysqld_safe]
socket		= /var/run/mysqld/mysqld.sock
nice		= 0

[mysqld]
#
# * Basic Settings
#
user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
basedir		= /usr
datadir		= /var/lib/mysql
tmpdir		= /tmp
lc-messages-dir	= /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address		= 127.0.0.1
#
# * Fine Tuning
#
key_buffer_size		= 16M
max_allowed_packet	= 16M
thread_stack		= 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options  = BACKUP
#max_connections        = 100
#table_open_cache       = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit	= 1M
query_cache_size        = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
#slow_query_log		= 1
#slow_query_log_file	= /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id		= 1
#log_bin			= /var/log/mysql/mysql-bin.log
expire_logs_days	= 10
max_binlog_size   = 100M
#binlog_do_db		= include_database_name
#binlog_ignore_db	= include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

Ich bin ratlos!

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11269

Wohnort: München

Hast du denn einen Nutzer mysql in der Datenbank eingerichtet, der sich mit dem Passwort lokal anmelden darf?

znieh99

(Themenstarter)

Anmeldungsdatum:
7. April 2014

Beiträge: 28

seahawk1986 schrieb:

Hast du denn einen Nutzer mysql in der Datenbank eingerichtet, der sich mit dem Passwort lokal anmelden darf?

MySQL hat einen Nutzer mysql am System angelegt. Ich habe nur sein Passwort geändert.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11269

Wohnort: München

RTFM 😛

Der Systemnutzer mysql ist ausschließlich dafür da um MySQL als Dienst mit eingeschränkten Rechten laufen zu lassen. Da man sich niemals nicht als dieser Benutzer anmeldet, sollte er kein Passwort (und keine Login-Shell) haben.

Bei Ubuntu 18.04 sollte in der Vorkonfiguration root das Recht haben sich über einen Unix-Socket ohne Passwort an der Datenbank anzumelden - also:

sudo -i
mysql 

Und dann kannst du in der Datenbank Benutzer anlegen, ihnen Passwörter und Rechte zuweisen usw.: https://dev.mysql.com/doc/refman/5.7/en/account-management-sql.html

znieh99

(Themenstarter)

Anmeldungsdatum:
7. April 2014

Beiträge: 28

Bei Ubuntu 18.04 sollte in der Vorkonfiguration root das Recht haben sich über einen Unix-Socket ohne Passwort an der Datenbank anzumelden - also:

1
2
3
4
5
6
7
sudo -i
mysql

mysql> CREATE USER 'user-name'@'localhost' IDENTIFIED BY 'passwort';
Query OK, …
mysql> GRANT ALL ON db1.* TO 'user-name'@'localhost';
mysql>exit

So hat es bei mir funktioniert. Danke für die Hilfe, lg heinz

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11269

Wohnort: München

Prima, dann setzt das Thema bitte noch auf gelöst.

Antworten |