Linux下安装mysql
1. 判断Linux下是否有mysql,没有的话继续
2. 到官网下载mysql压缩包解压到目标路径
3. 将mysql所在目录添加到环境变量
1
| export PATH=$PATH:/home/blackdoctor/Downloads/0_code/web_code/e-commerce/extra/mysql-8.0.21-linux-glibc2.17-x86_64-minimal/bin
|
4. 但命令行输入mysql报错
1
| ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
|
出现问题原因
有可能是 my.cnf 配置文件中设置了 [mysqld] 的参数 socket ,而没有设置[client]的参数socket
mysql.sock 文件有什么用:
mysql 支持 socket 和 TCP/IP 连接。那么 mysql.sock 这个文件有什么用呢?连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。/tmp 文件夹属于临时文件,随时可能被删除。
解决办法
- TCP 连接(如果报错 /tmp/mysql.sock,你可以尝试这种方式连接)
1
| mysql -uroot -h 127.0.0.1 -p
|
- socket 连接
在此之前先添加 [client] 配置项,如下所示
配置前:(配置 [client] 前,会报错’/tmp/mysql.sock’ (2))
1 2 3 4 5 6 7 8 9 10 11
| [mysqld] datadir=/usr/local/mysql/data basedir=/usr/local/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0
[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
|
配置后:(配置 [client] 后,重启 mysql服务)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [mysqld] datadir=/usr/local/mysql/data basedir=/usr/local/mysql socket=/var/lib/mysql/mysql.sock(跟这个socket路径一样) user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0
[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
[client] port=3306 socket=/var/lib/mysql/mysql.sock
|
5. 按照以上TCP连接方式输入密码后报错
1
| ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
|
猜测可能是服务没有启动,于是运行bin目录下的mysqld。
又是报错,根据报错信息创建了与bin同级的data文件夹
还是报错,报错信息一部分如下
1
| [ERROR] [MY-011011] [Server] Failed to find valid data directory
|
查阅资料:删除了自己手动创建的data文件夹,输入以下命令自动创建了data
1
| mysqld --initialize //--initialize-insecure不会生成随机密码
|
之后打开mysql.server文件,修改里面的basedir和datadir,再
大功告成