1. mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
????????在centos9中升級了libncurses.so的版本為libncurses.so.6,所以找不到libncurses.so.5
需要使用軟連接指向libncurses.so.6
ln -s /lib64/libncurses.so.6 /lib64/libncurses.so.5
2.MySQL安裝后,在/tmp/mysqld.log中找不到MySQL密碼?
????????出現以上問題的主要原因有兩種情況:① 計算機本身安裝過MySQL軟件,重復安裝導致初始化失敗 ② 數據庫配置異常,忘記創建賬號,目錄異常等等都可能初始化失敗了
????????初始化成功,在MySQL內部,會產生一個data目錄,里面最少要包含mysql文件夾(內置mysql數據庫,包含賬號、系統等信息)
cd /export/server/mysql
ll data
drwxr-x--- 2 mysql mysql 4096 Apr 20 14:34 '#innodb_redo'
drwxr-x--- 2 mysql mysql 187 Apr 20 14:34 '#innodb_temp'
drwxr-x--- 2 mysql mysql 143 Apr 20 11:06 mysql
-rw-r----- 1 mysql mysql 6 Apr 20 14:34 mysqld.pid
-rw-r----- 1 mysql mysql 26214400 Apr 20 14:34 mysql.ibd
drwxr-x--- 2 mysql mysql 8192 Apr 20 11:06 performance_schema
如果沒有這些目錄或者文件,就是初始化失敗了。
解決方案:刪除data目錄,然后重新初始化
cd export/server/mysql
rm -rf data
bin/mysqld --initialize --user=mysql --basedir=/export/server/mysql &>/tmp/mysqld.log
3.MySQL連接報錯,ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
????????出現以上問題的主要原因,可能是MySQL軟件沒有啟動 或者 MySQL已經異常啟動,但是沒有產生套接字。
MySQL軟件沒有啟動
systemctl status mysqldll /tmp systemctl start mysqld
MySQL已經異常啟動,但是沒有產生套接字
先嘗試使用systemctl終止mysqld服務
systemctl stop mysqld強制終止mysqld(生產環境慎用)
pkill mysqldsystemctl start mysqld
4.mysql忘記密碼解決方案
4.1停止mysql服務
systemctl stop mysqld
4.2以無授權模式啟動mysqld
無授權模式,就是客戶端連接mysql服務器端不進行密碼驗證。
mysqld_safe --skip-grant-tables &mysqld_safe:其實就是mysql進程,systemctl start mysqld相當于授權模式啟動mysqld_safe
--skip-grant-tables:跳過密碼驗證
&:后臺運行,不會影響命令行其他命令運行&:發音and符號,如果寫在某個命令的后面,代表后臺運行
4.3登錄mysql并重置密碼(只能把密碼置空!!!)
mysql8.0.40版本,不允許在非授權模式直接更改密碼,我們只能把密碼置空!!!
mysql -u root
回車mysql> UPDATE mysql.user SET authentication_string='' WHERE user='root';
mysql> FLUSH PRIVILEGES;
123叫做明文密碼,特別不安全,密碼存儲在數據庫中MySQL可以采用加密保存方式!!!
4.4關閉mysqld服務,正常啟動mysqld
1. 查看后臺運行進程
jobs2. 終止后臺編號為1的進程
kill %13. 重啟MySQL
systemctl stop mysqld
systemctl start mysqld
4.5重置密碼
mysql -uroot -p
回車mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; 或 set password='123456';
mysql> flush privileges;