/run目录下本来就每次重启清空的。这里面的文件正常都是程序运行时生成的,你应该配置mysqld并把生成的socks指定到对应目录。
Linux /run 目录概述
/run 目录在Linux系统中扮演着至关重要的角色,它主要用于存放运行时数据,如进程ID文件、锁文件、套接字文件等。这些数据通常用于协助程序运行时的交互,确保程序能够顺利完成任务。/run 目录作为一个临时文件系统(tmpfs),其内容存储在内存中而非磁盘上,这使得它在系统重启后不会保留任何数据。
/run 目录的作用
/run 目录中的文件和目录对于系统运行至关重要。例如,/run/user 目录下会有一些带数字编号的目录,这些数字代表了用户的UID。每个目录中包含的都是与该用户相关的运行中进程所使用的文件。此外,还有一些文件记录了各种系统进程的进程ID,如sshd.pid文件就包含了SSH守护进程的进程ID。
/run 目录与其他目录的关系
在历史上,类似的运行时数据曾存储在/dev/.XXX或/var/run目录中。但随着系统设计的演进,/run目录成为了更标准的做法,因为它能够在系统以只读根文件系统挂载时更容易地使用。在某些Linux发行版中,/var/run目录会通过符号链接到/run,以确保旧的引用按预期工作。
/run 目录的管理
由于/run目录中的数据是临时的,系统会在重启时清理其中的内容。因此,应用程序需要在启动时重新创建所需的文件和目录。有关如何在启动时重新创建文件和目录的详情,可以查看tmpfiles.d man页面。此外,系统管理员可能需要手动清理/run目录中的无用文件,以防止对系统造成过多负担。
结论
综上所述,/run目录是Linux系统中用于存储临时运行时数据的推荐位置。它通过tmpfs实现,保证了数据在内存中的快速访问,同时在系统重启后自动清理,避免了不必要的数据积累。在使用/run目录时,需要注意正确设置权限,并遵循系统提供的指导原则来管理和清理临时文件。
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.6G 3.2M 1.6G 1% /run
tmpfs 7.8G 2.5M 7.8G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
tmpfs 1.6G 108K 1.6G 1% /run/user/1001
把sock设置到/var/run/mysqld/socks.
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.6G 3.2M 1.6G 1% /run
tmpfs 7.8G 2.5M 7.8G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
tmpfs 1.6G 108K 1.6G 1% /run/user/1001
把sock设置到/var/run/mysqld/socks.
也没有用,重启后还是消失了
/var/run 是 /run 的链接. 和 /run 是一样的, 都是临时的文件目录.
$ ls -ld /var/run
lrwxrwxrwx 1 root root 4 Apr 17 2023 /var/run -> /run
解决办法是 创建一个目录, /var/lib/mysqld, 然后设sock 路径为, /var/lib/mysqld/mysqld.sock.
sudo mkdir /var/lib/mysqld
sudo chown mysql.mysql /var/lib/mysqld
sudo chmod 0700 /var/lib/mysqld
sudo ln -s /home/soft/mysql-8.4.0/mysql.sock /var/lib/mysqld/mysqld.sock
场景描述:
在 V23版本上安装mysql数据库时指定了安装目录,用navicat 链接时提示需要 /run/mysqld/mysqld.sock 。默认没有该文件,就在 /run 下新建了mysqld目录,然后将安装目录下的mysqld.socket 软连接过来,navicat可以正常访问。
操作命令:
问题:
每次电脑重启之后 /run目录下之前建的 mysqld目录消失了。每次都需要重新建立目录,然后再建立软连接。之前在20.9 版本没有遇到过这种问题。