0%

linux安装mysql

Linux下安装mysql

1. 判断Linux下是否有mysql,没有的话继续

1
whereis mysql
1
which mysql
1
find / -name 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 连接
    1
    mysql -uroot -p

在此之前先添加 [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,再

1
./mysql.server start

大功告成