Mam problem z połączeniem się do bazy danych mysql.
Kroki jakie wykonałem:
-
Pobrałem i uruchomiłem obraz mysql komendą:
sudo docker run --name sensorbox -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql
-
Połączyłem się z mysql z hosta:
docker exec -it sensorbox bash -l
-
Stworzyłem bazę danych, tabelę oraz użytkownika:
CREATE DATABASE IF NOT EXISTS sensorbox
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE sensorbox;
CREATE TABLE IF NOT EXISTS sensor (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
longname VARCHAR(50) NOT NULL,
temperature FLOAT NOT NULL,
press FLOAT NOT NULL,
created DATETIME NOT NULL,
humidity FLOAT NOT NULL
);
CREATE USER IF NOT EXISTS 'user'@'localhost';
GRANT SELECT, INSERT, UPDATE ON sensorbox.* TO 'user'@'localhost';
ALTER USER 'user'@'localhost' IDENTIFIED BY '1234';
- W swoim programie napisanym w Golangu, próbuję połączyć się z bazą danych:
db, err := sql.Open("mysql", "user:1234@tcp(localhost:3306)/sensorbox")
ale otrzymuję błąd:
Error 1045: Access denied for user 'user'@'172.17.0.1' (using password: YES) exit status 1
Nie wiem co robię źle, ponieważ bezpośrednio z kontenera mogę się połączyć:
mysql -u user -p 1234
Co więcej mogę się z programu zalogować jako root, tzn poniższy kod działa poprawnie:
db, err := sql.Open("mysql", "root:123456@tcp(localhost:3306)/sensorbox")