Trong quá trình cài đặt MySQL 8.0.33 dạng nhị phân, tôi gặp phải các thông báo lỗi sau đây:
./mysqld: /lib64/libstdc++.so.6: version `CXXABI_1.3.11' not found (required by ./mysqld)
./mysqld: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by ./mysqld)
./mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by ./mysqld)
./mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./mysqld)
./mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./mysqld)
./mysqld: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./mysqld)
./mysqld: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by ./mysqld)
./mysqld: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by /usr/local/mysql/bin/../lib/private/libcrypto.so.1.1)
./mysqld: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /usr/local/mysql/bin/../lib/private/libprotobuf-lite.so.3.19.4)
./mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/local/mysql/bin/../lib/private/libprotobuf-lite.so.3.19.4)
./mysqld: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/local/mysql/bin/../lib/private/libprotobuf-lite.so.3.19.4)
./mysqld: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/local/mysql/bin/../lib/private/libprotobuf-lite.so.3.19.4)
./mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/local/mysql/bin/../lib/private/libprotobuf-lite.so.3.19.4)
Sau khi kiểm tra, tôi phát hiện rằng libstdc++.so.6 trên máy chủ trỏ đến libstdc++.so.6.0.19 trong cùng thư mục, và trong hệ thống chỉ có libstdc++.so.6.0.19, không chứa các thư viện cần thiết. Theo giải pháp tìm được trên mạng, tôi đã tải xuống libstdc++.so.6.0.25 và tạo liên kết mềm libstdc++.so.6 trỏ đến libstdc++.so.6.0.25. Sau đó, lỗi đã thay đổi thành:
./mysqld: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
Qua tìm hiểu, tôi nhận thấy đây là vấn đề xung đột phiên bản, nhưng libstdc++-4.8.5-44.el7 đã là phiên bản mới nhất của CentOS rồi.
Sau đó, tôi phát hiện rằng cần nâng cấp gcc. Do máy chủ của tôi là máy chủ nội bộ không thể xác thực qua yum nên tôi sẽ cung cấp một liên kết để các bạn tự tham khảo: https://zhuanlan.zhihu.com/p/535657060. Còn tôi sẽ sử dụng phương pháp biên dịch và cài đặt gcc.
Tương tự, libc.so.6 trỏ đến libc-2.17.so trong cùng thư mục, cũng thiếu các thư viện cần thiết và cần nâng cấp glibc. Tôi cũng sẽ sử dụng phương pháp biên dịch và cài đặt glibc.
Trang chủ gcc: https://gcc.gnu.org/; Địa chỉ tải: https://ftp.gnu.org/gnu/
(1).Biên dịch và cài đặt GMP (gói phụ thuộc của gcc)
Tôi tải gmp-6.2.1.tar.xz
[root@server1 ~]# yum -y install m4
[root@server1 ~]# tar xvf gmp-6.2.1.tar.xz
[root@server1 ~]# cd gmp-6.2.1
[root@server1 gmp-6.2.1]# mkdir build
[root@server1 gmp-6.2.1]# cd build/
[root@server1 build]# ../configure --prefix=/usr/local/gmp-6.2.1
[root@server1 build]# echo $?
0 //trả về 0 nghĩa là thành công
[root@server1 build]# make -j 4 && make install
[root@server1 build]# echo $?
0 //trả về 0 nghĩa là thành công
(2).Biên dịch và cài đặt MPFR (gói phụ thuộc của gcc)
Tôi tải mpfr-4.2.0.tar.gz
[root@server1 build]# cd ~
[root@server1 ~]# tar zxvf mpfr-4.2.0.tar.gz
[root@server1 ~]# cd mpfr-4.2.0
[root@server1 mpfr-4.2.0]# mkdir build
[root@server1 mpfr-4.2.0]# cd build
[root@server1 build]# ../configure --prefix=/usr/local/mpfr-4.2.0 --with-gmp=/usr/local/gmp-6.2.1
[root@server1 build]# echo $?
0 //trả về 0 nghĩa là bình thường
[root@server1 build]# make -j 4 && make install
[root@server1 build]# echo $?
0 //trả về 0 nghĩa là bình thường
(3).Biên dịch và cài đặt MPC (gói phụ thuộc của gcc)
Tôi tải mpc-1.3.1.tar.gz
[root@server1 build]# cd ~
[root@server1 ~]# tar zxvf mpc-1.3.1.tar.gz
[root@server1 ~]# cd mpc-1.3.1
[root@server1 mpc-1.3.1]# mkdir build
[root@server1 mpc-1.3.1]# cd build
[root@server1 build]# ../configure --prefix=/usr/local/mpc-1.3.1 --with-gmp=/usr/local/gmp-6.2.1 --with-mpfr=/usr/local/mpfr-4.2.0
[root@server1 build]# echo $?
0 //trả về 0 nghĩa là bình thường
[root@server1 build]# make -j 4 && make install
[root@server1 build]# echo $?
0 //trả về 0 nghĩa là bình thường
(4).Thêm biến môi trường
Cần thêm các gói phụ thuộc vào biến môi trường nếu không sẽ bị báo lỗi. Lưu ý: khi thêm LD_LIBRARY_PATH, cần kiểm tra xem echo $LD_LIBRARY_PATH có trả về rỗng hay không. Nếu không rỗng, hãy sao chép giá trị đó và bổ sung, không nên sử dụng LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-1.3.1/lib:/usr/local/gmp-6.2.1/lib:/usr/local/mpfr-4.2.0/lib, vì tôi sẽ giải thích lý do khi cài đặt glibc bên dưới.
[root@server1 build]# vi /etc/profile
//thêm dòng cuối cùng
export LD_LIBRARY_PATH=/usr/local/mpc-1.3.1/lib:/usr/local/gmp-6.2.1/lib:/usr/local/mpfr-4.2.0/lib
[root@server1 build]# source /etc/profile //tải lại
Nếu không thêm biến môi trường, khi biên dịch và cài đặt gcc sẽ báo lỗi sau:
error while loading shared libraries: libmpfr.so.6: cannot open shared object file: No such file or directory
(5).Biên dịch và cài đặt gcc
Tôi tải gcc-13.1.0.tar.gz
[root@server1 build]# cd ~
[root@server1 ~]# tar zxvf gcc-13.1.0.tar.gz
[root@server1 ~]# cd gcc-13.1.0
[root@server1 gcc-13.1.0]# mkdir build && cd build
[root@server1 build]# ../configure --prefix=/usr/local/gcc-13.1.0 --enable-language=c,c++,java --disable-multilib --with-gmp=/usr/local/gmp-6.2.1 --with-mpfr=/usr/local/mpfr-4.2.0 --with-mpc=/usr/local/mpc-1.3.1
[root@server1 build]# echo $?
0 //trả về 0 nghĩa là bình thường
[root@server1 build]# make -j 4 && make install
[root@server1 build]# echo $?
0 //trả về 0 nghĩa là bình thường
[root@server1 build]# vi /etc/profile
//thêm dòng cuối cùng
export PATH=/usr/local/gcc-13.1.0/bin/:$PATH
[root@server1 build]# . /etc/profile //tải lại
(6).Thay thế libstdc.so.6 và kiểm tra
Thay thế liên kết mềm
[root@server1 build]# cd /usr/lib64/
[root@server1 lib64]# rm -rf libstdc++.so.6
[root@server1 lib64]# ln -s /usr/local/gcc-13.1.0/lib64/libstdc++.so.6 ./libstdc++.so.6
Khởi động mysqld dạng nhị phân để xem lỗi có giảm không, sau khi tôi khởi động thì lỗi đã thay đổi như sau:
./mysqld: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by ./mysqld)
./mysqld: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by /usr/local/mysql/bin/../lib/private/libcrypto.so.1.1)
./mysqld: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /usr/local/mysql/bin/../lib/private/libprotobuf-lite.so.3.19.4)
Đã giải quyết được phần lớn vấn đề, bước tiếp theo là nâng cấp glibc.
(7).Phần còn lại xử lý không được, tôi đã nâng cấp glibc nhưng gặp vấn đề khác không thể sử dụng. Chỉ có thể dừng lại ở đây
Tham khảo: https://blog.csdn.net/qq_35107621/article/details/130718534