차근차근/Linux

centOS mysql 연결안됨.

예쁜꽃이피었으면 2016. 3. 28. 14:15



리눅스에 설치되어 있는 mysql을 재시작했지만.. 

홈페이지에서 DB를 사용할 수 없었다..


음.. 내가 얼마전에 계정권한을 변경하였는데.. 그것 때문인가 싶었지만.. 

한동안 해결을 못했었다.


DB가 8개 였다면 계정권한 수정 후 3개의 DB만 볼 수 있었고..

계정정보도 보려고 했지만 로그인한 계정의 정보 밖에 볼 수 없었다.

또 로그인을 할 때도 


mysql -uroot -p

Enter password: 패스워드 입력

이렇게 로그인을 했었는데.. 이렇게도 안되서


mysql -h주소 -u계정ID -p계정PW

이렇게 해서 로그인을 했다.



▶ 사용자 확인

mysql> use mysql;

mysql> select user, host from user; 이것도 use mysql; 하면 에러가 남.



계정권한을 변경하려고 했다가 우선 기존의 방법대로 로그인이 가능하도록 바꿔야 겠다는 생각이 들었다.

 → quit 명령어로 mysql을 빠져나온 후





1. 

1-1. /etc/init.d/mysqld stop

1-2. mysqld_safe --skip-grant &

1-3. Starting mysqld daemon with databases from /var/lib/mysql

1-4. quit






2.

2-1. mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 10

Server version: 5.0.95 Source distribution


Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


2-2.

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database changed


2-3.

mysql> update user set password=password('PW입력') where user='계정ID';

Query OK, 1 row affected (0.02 sec)

Rows matched: 5  Changed: 1  Warnings: 0


2-4.

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)


2-5.

mysql> quit

Bye

[2]+  Exit 1                  mysqld_safe --skip-grant




3.

3-1.

[root@a~]# mysql -u계쩡ID -p

Enter password:PW입력

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 14

Server version: 5.0.95 Source distribution


Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


ok로그인됨.



mysql>  SHOW DATABASES;

mysql> use mysql

mysql> select host,user,password from user;

이거 결과다 제대로 나옴.


근데도 DB연결이 안되다고 함.

mysql> GRANT ALL PRIVILEGES ON DB명.* TO '계정ID'@'%' IDENTIFIED BY '계정PW' WITH GRANT OPTION;

Query OK, 0 rows affected (0.00 sec)

(전에도 계속

mysql> GRANT ALL PRIVILEGES ON *.* TO '계정ID'@'%' IDENTIFIED BY '계정PW' WITH GRANT OPTION;

이렇게 했었는데.. 이렇게 했을 때는 DB연결이 안됐었다..

)


이렇게 하고 다시 홈페이지보니 잘 됨.


http://stackoverflow.com/questions/8348762/access-denied-when-trying-to-access-database-using-root-issue



http://chunun.com/entry/MySQL-1045%EC%97%90%EB%9F%AC-%EB%B0%9C%EC%83%9D-mysql%EC%9D%84-root%EB%A1%9C-%EC%A0%91%EC%86%8D%ED%95%98%EC%A7%80-%EB%AA%BB%ED%95%98%EB%8A%94-%EA%B2%BD%EC%9A%B0-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95







20160407 같은 문제가 발생 했다. 

어.. 위의 방식으로 했지만 .. 특정 데이터베이스를 이용하는 웹페이지는 실행되지 않았다.

(워드프레스)

음.. 그래서.. 뭘까 하다가 관리자 페이지로 로그인을 하니까.

" 하나 이상의 데이터베이스 테이블이 불가능합니다. 데이터베이스는 수리가 필요할 수도 있습니다. "

라고 ..화면에 보였다..

워드프레스의 데이터베이스를 한번도 들여다 본적이 없어서.. 뭘 어떻게 해야 하나.. 하다가
무작정 토드로 접속을 해봤다. 
오..일단 접속은 했고. 테이블을 하나씩 열어봤더니.

하나의 테이블에서 에러가 보였다.
Table './테이블명' is marked as crashed and should be repaired









음.. 검색.


따라해본다. 

mysql 접속 후에
에러가 나는 테이블을 백업해두고

mysql> repair table product; //"product"는 오류가 생긴 테이블 입니다.
mysql>analyze table product;를 실행하면 테이블에 대한 보고서가 작성됩니다.
mysql>repair table product;를 실행하면 복원이 됩니다.

이렇게 하고 웹페이지 보니.. 아직 그대로

 myisamchk -r 테이블파일 
도 따라해봤지만 그대로..

 myisamchk -r 테이블파일 하기전에 
quit 를 통해 mysql에서 빠져 나오고

myisamchk -r /var/lib/mysql/데이터베이스명/깨진테이블명
하고 웹페이지 접속하니 화면이 잘 나온다.
다행..이다..ㅜ.ㅠ 


[root@plantid ~]# myisamchk -r /var/lib/mysql/데이터베이스명/깨진테이블명
- recovering (with sort) MyISAM-table '/var/lib/mysql/데이터베이스명/깨진테이블명'
Data records: 380
- Fixing index 1
- Fixing index 2
Data records: 376











반응형