Posted on 2010/04/13 14:19
Filed Under Database/Mysql

그리 자주 사용하지는 않지만 매우 필요한, 잊어버리지말자!

데이터베이스 루트 비밀번호 분실시

일단 mysql 프로세스를 모두 죽인다.
killall mysqld
혹은
/etc/init.d/mysqld stop
그후 계정이 없는 모드로 mysql을 실행한다.
safe_mysqld --user=root --skip-grant-tables &
혹은
mysqld_safe --user=root --skip-grant-tables &

후에 mysql 로 들어간후 use mysql; update user set password=password('114') where user='root'; 로 변경한다.

예전 시스템의 경우 비밀번호방식이 다른데 old_password로 변경할수 있다.

데이터베이스 이전시 덤프와 입력을 동시에!

mysqldump -h 192.68.0.30 -uroot -p114 --skip-lock-tables data | mysql -h 192.68.0.31 -uroot -p114 data
재시작이 안될경우...
netstat -nlp
하면 각 포트당 물고있는 서비스들이 나온다. 보통은 killall mysqld 하면 죽지만 않죽는경우 위처럼 한다음 PID를 알아내 kill -9 pid 해서 강제로 죽인후 재시작 하면 된다.
vi /var/log/mysql.log
를 보면 원인을 알수있는데 다음과 같은 에러가 난다면
060716 17:21:53  mysqld started
060716 17:21:53 InnoDB: Started; log sequence number 0 1736000119
/usr/sbin/mysqld: File './mysql-bin.000002' not found (Errcode: 2)
060716 17:21:53 [ERROR] Failed to open log (file './mysql-bin.000002', errno 2)
060716 17:21:53 [ERROR] Could not open log file
060716 17:21:53 [ERROR] Can't init tc log
060716 17:21:53 [ERROR] Aborting

060716 17:21:53 InnoDB: Starting shutdown...
060716 17:21:55 InnoDB: Shutdown completed; log sequence number 0 1736000119
060716 17:21:55 [Note] /usr/sbin/mysqld: Shutdown complete

060716 17:21:55 mysqld ended
mysql-bin.index를 삭제해주고 시작하면 된다.
백업후 복구시
ERROR 1153 (08S01) at line 20555: Got a packet bigger than 'max_allowed_packet' bytes
와같은 에러가 난다면
[mysqld]
max_allowed_packet=512M
[client]
max_allowed_packet=512M
이런식으로 설정을 바꿔준다. 최대 허용 패킷이라는건데 원격에서 할경우 날수 있는 오류이다. 4.0.1 이상부터는 1기가까지 가능하고 그 이하는 16M가 최대인다.

Incorrect integer value: '' for column 'field' at row 1
MySQL 5.x 업그레이드 이후 Incorrect integer value: 문제로 strict mode를 주석처리
integer 값에 '' 빈 스트링값이 들어가서 생기는 오류

# Set the SQL mode to strict
# sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"  


2010/04/13 14:19 2010/04/13 14:19

트랙백 주소 : http://www.takeone.pe.kr/trackback/270

Counter

· Total
: 361230
· Today
: 50
· Yesterday
: 89