MySQL
MySQL, and Solutions.
ERROR 1045 (28000): Access denied for user 'xxx'@'xxx' (using password: YES)
: MySQL
:, host
Solutions:
- : -p,
- : SELECT user, host FROM mysql.user WHERE user = 'xxx';
- host : 'user'@'localhost' and 'user'@'%'
- : ALTER USER 'user'@'host' IDENTIFIED BY 'newpassword';
- root : --skip-grant-tables MySQL
: ~/.my.cnf ; host
ERROR 2003 (HY000): Can't connect to MySQL server on 'host' (111) / ERROR 2002: Can't connect through socket
: MySQL
:MySQL,, bind-address
Solutions:
- MySQL : systemctl status mysql
- MySQL : systemctl start mysql
- : ss -tlnp | grep 3306
- bind-address : grep bind-address /etc/mysql/mysql.conf.d/mysqld.cnf( 0.0.0.0 )
- : ufw allow 3306 firewall-cmd --add-port=3306/tcp --permanent
- Socket socket : mysql -S /var/run/mysqld/mysqld.sock -u root -p
: MySQL : systemctl enable mysql; MySQL
ERROR 1146 (42S02): Table 'database.table_name' doesn't exist
: SELECT, INSERT, UPDATE and more
:,,
Solutions:
- : SELECT DATABASE(); SHOW TABLES;
- : SHOW TABLES LIKE '%order%';
- : USE ecommerce;
- : Linux MySQL, lower_case_table_names
- :, binlog
: SQL database.table ;
ERROR 1062 (23000): Duplicate entry 'xxx' for key 'PRIMARY' / 'uk_xxx'
: INSERT UPDATE
:New
Solutions:
- : SELECT * FROM table WHERE unique_column = 'xxx';
- INSERT.. ON DUPLICATE KEY UPDATE New: INSERT INTO t (id, name) VALUES (1, 'new') ON DUPLICATE KEY UPDATE name = 'new';
- INSERT IGNORE ()
- REPLACE INTO (, ID)
- ,
: SELECT ; and more; ON DUPLICATE KEY UPDATE
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
: UPDATE, DELETE SELECT.. FOR UPDATE and more
:(, )
Solutions:
- and more: SELECT * FROM information_schema.INNODB_LOCK_WAITS;(MySQL 5.7) SELECT * FROM performance_schema.data_lock_waits;(MySQL 8.0)
- : SHOW ENGINE INNODB STATUS; LATEST DETECTED DEADLOCK
- : SHOW PROCESSLIST; KILL <blocking_thread_id>;
- : SELECT * FROM information_schema.INNODB_TRX WHERE trx_state = 'RUNNING';
- and more(): SET innodb_lock_wait_timeout = 120;
:, ;New; SQL