Mysql 二进制安装常见问题

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 mysqld

ll /tmp 

systemctl start mysqld

MySQL已经异常启动,但是没有产生套接字

复制代码
先尝试使用systemctl终止mysqld服务
systemctl stop mysqld

强制终止mysqld(生产环境慎用)
pkill mysqld

systemctl 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. 查看后台运行进程
jobs

2. 终止后台编号为1的进程
kill %1

3. 重启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;