init_connect = ‘set autocommit=0’ 가 동작하지 않는다
[mysqld]
init_connect=’SET AUTOCOMMIT=0′
욜케 등록은 했지만 동작하지 않는다.
왜 그럴까.. 버그인가 싶다.
[14:43:21]root@localhost:mysql.sock, (none)> status;
————–
mysql Ver 14.12 Distrib 5.0.22, for redhat-linux-gnu (x86_64) using readline 5.0
Connection id: 65
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ”
Using delimiter: ;
Server version: 5.0.22-log
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 3 min 52 sec
Threads: 1 Questions: 1374 Slow queries: 0 Opens: 0 Flush tables: 1 Open tables: 41 Queries per second avg: 5.922
————–
[14:43:22]root@localhost:mysql.sock, (none)> select @@autocommit;
+————–+
| @@autocommit |
+————–+
| 1 |
+————–+
1 row in set (0.00 sec)
[14:43:28]root@localhost:mysql.sock, (none)>
init_connect
연결 되어 있는 각 클라이언트를 위해 서버가 실행하는 스트링. 이 스트링은 한 개 또는 그 이상의 SQL 명령문으로 구성된다. 다중 명령문을 지정하기 위해서는, 각각을 세미콜론으로 구분한다. 예를 들면, 각 클라이언트는 디폴트로 오토커미트 (autocommit) 모드를 활성화 해서 사용한다. 오토커미트를 디폴트로 비활성화 시킬 수 있는 글로벌 시스템 변수는 없으나,
init_connect
를 사용하면 동일한 효과를 얻을 수가 있다:SET GLOBAL init_connect=’SET AUTOCOMMIT=0′;
이 변수를 명령어 라인 또는 옵션 파일에서 설정할 수 있다. 옵션 파일에 안에서 이 변수를 설정하기 위해서는 다음의 라인을 추가한다:
[mysqld]
init_connect=’SET AUTOCOMMIT=0′
SUPER
권한을 가지고 있는 사용자는init_connect
컨텐츠를 실행할 수 없다는 점을 알아두기 바란다. 이것은init_connect
에 대한 오류 값으로 인해 모든 클라이언트가 연결을 할 수 없는 경우가 발생하지 않도록 하기 위한 것이다. 예를 들면, 이 변수 값에 신텍스 에러가 있는 명령문이 들어 있을 수도 있는데, 이런 일이 발생하면 클라이언트가 연결을 할 수 없게 된다.init_connect
를SUPER
권한을 가지고 있는 사용자용으로 실행하지 않으면 연결을 열고init_connect
값을 고치는 것이 가능해진다.
[14:48:10,145][email protected]:/home/zeroidle/public_html/blog# mysql -uzeroidle -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 147 to server version: 5.0.22-log
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.
[14:48:16]zeroidle@localhost:mysql.sock, (none)> select @@autocommit;
+————–+
| @@autocommit |
+————–+
| 0 |
+————–+
1 row in set (0.00 sec)
[14:48:21]zeroidle@localhost:mysql.sock, (none)> quit
Bye
유저아이디로 들어가니 잘된다.
mysql_root가 init_connect를 잘못설정했을경우 접속안되는문제를 방지하기 위함이라는데
어차피 shell_root가 있고 my.cnf를 수정할 수 있는데
왜 막아놓았는지 미쿡오빠들의 생각은 이해할수가 없당.