啓動異常 libstdc++.so.6: version `GLIBCXX_*' not found

啓動異常 libstdc++.so.6: version `GLIBCXX_*’ not found

[root@localhost mysql-5.7.22]# ./startup.sh 
/usr/local/mysql/bin/my_print_defaults: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/local/mysql/bin/my_print_defaults)
/usr/local/mysql/bin/my_print_defaults: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/local/mysql/bin/my_print_defaults)
/usr/local/mysql/bin/my_print_defaults: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/local/mysql/bin/my_print_defaults)
Starting MySQL./usr/local/mysql/bin/my_print_defaults: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/local/mysql/bin/my_print_defaults)
/usr/local/mysql/bin/my_print_defaults: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/local/mysql/bin/my_print_defaults)
/usr/local/mysql/bin/my_print_defaults: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/local/mysql/bin/my_print_defaults)
/usr/local/mysql/bin/my_print_defaults: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/local/mysql/bin/my_print_defaults)
/usr/local/mysql/bin/my_print_defaults: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/local/mysql/bin/my_print_defaults)
/usr/local/mysql/bin/my_print_defaults: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/local/mysql/bin/my_print_defaults)
The server quit without updating PID file (/usr/local/mysql[失敗]localhost.localdomain.pid).

異常原因:根據異常信息,我們可以看到在路徑/lib64/libstdc++.so.6中找不到GLIBCXX_3.4.20,我查了一下,果然沒有GLIBCXX_3.4.20

[root@localhost mysql-5.7.22]# strings /lib64/libstdc++.so.6 | grep GLIBCXX  
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19

然後我們全局查找libstdc++.so.6這個文件,果然找到了一下,過濾掉docker以後,從剩下的路徑下找到有GLIBCXX_3.4.20的文件,如下:

[root@localhost mysql-5.7.22]# strings /usr/local/gcc/lib64/libstdc++.so.6 | grep GLIBCXX                
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25

如果可以,我們替換掉原文件,命令如下:

#備份
[root@localhost mysql-5.7.22]# cp /lib64/libstdc++.so.6 /lib64/libstdc++.so.6.save
#替換
[root@localhost mysql-5.7.22]# cp /usr/local/gcc/lib64/libstdc++.so.6 /lib64/libstdc++.so.6

替換完畢後試試能不能啓動,命令如下:

[root@localhost mysql-5.7.22]# ./start.sh 
Starting MySQL...                                          [  確定  ]

果然可以了,此處我使用的自己寫的啓動命令,你們也可以通過systemctl start mysql 或者 service start mysql進行啓動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章