Description:
MySQL was upgraded from 3.23.56 to 4.0.13, and then started problems. PHP scripts, which do mysql_connect(), return error number 1045:
Access denied for user: 'root@localhost' (Using password: NO)
Function is used as: mysql_connect("localhost", "user", "pass"); user is not "root", and password IS defined.
I finded out, bug with ID: 398
http://bugs.mysql.com/bug.php?id=398
It's similar. But we have MySQL with LinuxThreads, and it's not TCP/IP stack problem, because connection is prepared by UNIX socket.
How to repeat:
It's rather hard to find it from PHP. It shows about 7-15 times per day. Server is not shutdowned, or killed.
Log-in to database using command 'mysql'. Wait some time (it's random time, from 3m to 3h). Try to do query, like:
mysql> SELECT * FROM example;
ERROR:
Try to do another query:
mysql> SELECT * FROM example;
ERROR 2006: MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 136725
Current database: example
+---------+
| example |
+---------+
| 1 |
| 2 |
+---------+
2 rows in set (0.01 sec)
Suggested fix:
I traced MySQL client. I logged to database, waited some time, and tried select * from tmp, and got just error without code or description. Most interesting part IMHO is "Broken pipe":
61025 mysql RET read 1
61025 mysql CALL write(0x1,0x808e000,0x12)
61025 mysql GIO fd 1 wrote 18 bytes
"select * from tmp;"
61025 mysql RET write 18/0x12
61025 mysql CALL sigprocmask(0x1,0,0x806db1c)
61025 mysql RET sigprocmask 0
61025 mysql CALL read(0,0xbfbffa8f,0x1)
61025 mysql GIO fd 0 read 1 byte
"\r"
61025 mysql RET read 1
61025 mysql CALL write(0x1,0x808e000,0x1)
61025 mysql GIO fd 1 wrote 1 byte
"
"
61025 mysql RET write 1
61025 mysql CALL sigprocmask(0x1,0x806d5a0,0x806d5b0)
61025 mysql RET sigprocmask 0
61025 mysql CALL ioctl(0,TIOCSETAW,0x806d5e0)
61025 mysql RET ioctl 0
61025 mysql CALL sigprocmask(0x3,0x806d5b0,0)
61025 mysql RET sigprocmask 0
61025 mysql CALL sigaction(0x2,0x806d768,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0xf,0x806d780,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x3,0x806d7b0,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0xe,0x806d798,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x12,0x806d7c8,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x16,0x806d7e0,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x15,0x806d7f8,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x1c,0x806d810,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL getrusage(0,0xbfbff938)
61025 mysql RET getrusage 0
61025 mysql CALL getrusage(0xffffffff,0xbfbff938)
61025 mysql RET getrusage 0
61025 mysql CALL gettimeofday(0xbfbff930,0)
61025 mysql RET gettimeofday 0
61025 mysql CALL fcntl(0x3,0x4,0x6)
61025 mysql RET fcntl 0
61025 mysql CALL readv(0x3,0xbfbff8e0,0x2)
61025 mysql GIO fd 3 read 0 bytes
""
61025 mysql RET readv 0
61025 mysql CALL fcntl(0x3,0x4,0x2)
61025 mysql RET fcntl 0
61025 mysql CALL write(0x3,0x8076000,0x16)
61025 mysql RET write -1 errno 32 Broken pipe
61025 mysql CALL shutdown(0x3,0x2)
61025 mysql RET shutdown 0
61025 mysql CALL close(0x3)
61025 mysql RET close 0
61025 mysql CALL write(0x1,0x808e000,0x9)
61025 mysql GIO fd 1 wrote 9 bytes
"\aERROR:
"
61025 mysql RET write 9
61025 mysql CALL write(0x1,0x808e000,0x1)
61025 mysql GIO fd 1 wrote 1 byte
"
"
61025 mysql RET write 1
61025 mysql CALL sigprocmask(0x1,0x806d5a0,0x806d5b0)
61025 mysql RET sigprocmask 0
61025 mysql CALL ioctl(0,TIOCGWINSZ,0xbfbffa38)
61025 mysql RET ioctl 0
61025 mysql CALL ioctl(0,TIOCSWINSZ,0xbfbffa38)
61025 mysql RET ioctl 0
61025 mysql CALL ioctl(0,TIOCGETA,0xbfbffab4)
61025 mysql RET ioctl 0
61025 mysql CALL ioctl(0,TIOCSETAW,0xbfbffab4)
61025 mysql RET ioctl 0
61025 mysql CALL sigprocmask(0x3,0x806d5b0,0)
61025 mysql RET sigprocmask 0
61025 mysql CALL sigaction(0x2,0xbfbffa48,0x806d768)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0xf,0xbfbffa38,0x806d780)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x3,0xbfbffa48,0x806d7b0)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0xe,0xbfbffa98,0x806d798)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x12,0xbfbffa48,0x806d7c8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x16,0xbfbffa38,0x806d7e0)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x15,0xbfbffa48,0x806d7f8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x1c,0xbfbffa48,0x806d810)
61025 mysql RET sigaction 0
61025 mysql CALL write(0x1,0x808e000,0x7)
61025 mysql GIO fd 1 wrote 7 bytes
"mysql> "
61025 mysql RET write 7
61025 mysql CALL sigprocmask(0x1,0,0x806db1c)
61025 mysql RET sigprocmask 0
61025 mysql CALL read(0,0xbfbffa8f,0x1)
61025 mysql GIO fd 0 read 1 byte
"\^["
61025 mysql RET read 1
61025 mysql CALL read(0,0xbfbffa5f,0x1)
61025 mysql GIO fd 0 read 1 byte
"["
61025 mysql RET read 1
61025 mysql CALL read(0,0xbfbffa2f,0x1)
61025 mysql GIO fd 0 read 1 byte
"A"
61025 mysql RET read 1
61025 mysql CALL write(0x1,0x808e000,0x12)
61025 mysql GIO fd 1 wrote 18 bytes
"select * from tmp;"
61025 mysql RET write 18/0x12
61025 mysql CALL sigprocmask(0x1,0,0x806db1c)
61025 mysql RET sigprocmask 0
61025 mysql CALL read(0,0xbfbffa8f,0x1)
61025 mysql GIO fd 0 read 1 byte
"\r"
61025 mysql RET read 1
61025 mysql CALL write(0x1,0x808e000,0x1)
61025 mysql GIO fd 1 wrote 1 byte
"
"
61025 mysql RET write 1
61025 mysql CALL sigprocmask(0x1,0x806d5a0,0x806d5b0)
61025 mysql RET sigprocmask 0
61025 mysql CALL ioctl(0,TIOCSETAW,0x806d5e0)
61025 mysql RET ioctl 0
61025 mysql CALL sigprocmask(0x3,0x806d5b0,0)
61025 mysql RET sigprocmask 0
61025 mysql CALL sigaction(0x2,0x806d768,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0xf,0x806d780,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x3,0x806d7b0,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0xe,0x806d798,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x12,0x806d7c8,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x16,0x806d7e0,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x15,0x806d7f8,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL sigaction(0x1c,0x806d810,0xbfbffae8)
61025 mysql RET sigaction 0
61025 mysql CALL getrusage(0,0xbfbff938)
61025 mysql RET getrusage 0
61025 mysql CALL getrusage(0xffffffff,0xbfbff938)
61025 mysql RET getrusage 0
61025 mysql CALL gettimeofday(0xbfbff930,0)
61025 mysql RET gettimeofday 0
61025 mysql CALL write(0x2,0xbfbff268,0xc)
61025 mysql GIO fd 2 wrote 12 bytes
"ERROR 2006: "
61025 mysql RET write 12/0xc
61025 mysql CALL write(0x1,0x808e000,0x1c)
61025 mysql GIO fd 1 wrote 28 bytes
"\aMySQL server has gone away
"
61025 mysql RET write 28/0x1c
61025 mysql CALL write(0x1,0x808e000,0x26)
61025 mysql GIO fd 1 wrote 38 bytes
"No connection. Trying to reconnect...
"
61025 mysql RET write 38/0x26
61025 mysql CALL socket(0x1,0x1,0)
61025 mysql RET socket 3
61025 mysql CALL fcntl(0x3,0x3,0xbfbfebb0)
61025 mysql RET fcntl 2
61025 mysql CALL connect(0x3,0xbfbff620,0x6a)
61025 mysql NAMI "/dev/mysql"
61025 mysql RET connect 0
61025 mysql CALL setsockopt(0x3,0xffff,0x8,0xbfbfebac,0x4)
61025 mysql RET setsockopt 0
61025 mysql CALL readv(0x3,0xbfbfeae0,0x2)