MySQL - MySQL 8.0(四)配置MySQL:更改数据目录(Yum、Apt)
Apt(Debain、Ubuntu) 1. 检查当前的数据目录 2. 停止MySQL 3. 检查状态 4. 在`创建新目录`并将所有权更改到`指定用户`下: 5. 将文件移动到新的数据目录中 6. 配置`/etc/mysql/mysql.conf.d/mysqld.cnf ` 7. 启动MySQL服务器并确认数据目录已更改 8. 验证数据是否完整并`删除旧数据目录` Yum(Red Hat、CentOS) 2. 停止MySQL 3. 检查状态 6. 配置Access Control 7. 启动MySQL服务器并确认数据目录已更改 坑! 坑!Yum-01:`启动失败` - 托管访问控制系统(`SELinux`) 照着做喽!填坑呗 坑!Yum-02:`登录失败`
Apt(Debain、Ubuntu)
1. 检查当前的数据目录
2. 停止MySQL
3. 检查状态
4. 在创建新目录
并将所有权更改到指定用户
下:
5. 将文件移动到新的数据目录中
6. 配置/etc/mysql/mysql.conf.d/mysqld.cnf
修改datadir
的路径指向为/data/mysql
,wq
保存并退出
7. 启动MySQL服务器并确认数据目录已更改
8. 验证数据是否完整并删除旧数据目录
Yum(Red Hat、CentOS)
详细步骤请参考Apt
,Yum
只列出与Apt
有区别的部分步骤
2. 停止MySQL
3. 检查状态
应显示stopped MySQL Community Server
6. 配置Access Control
7. 启动MySQL服务器并确认数据目录已更改
仅配置/etc/my.cnf
依然会启动失败,解决方法请见坑!Yum-01
如果 MySQL 无法启动并显示错误:MySQL data dir not found at /var/lib/mysql, Please Creat one,那么执行sudo mkdir /var/lib/mysql/
。
如果没有找到 MySQL 系统数据库,运行mysql_install_db
工具,它会创建所需的目录。
坑!
坑!Yum-01:启动失败
- 托管访问控制系统(SELinux
)
报错原因:修改了数据目录
[nangy@nangy-vm ~]$ sudo systemctl start mysqld Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
查看一下状态,阿西吧,居然failed
,不可接受,找解决办法
各种找度娘,还是大神多,找了几篇神文:SELinux之于MySQL 或者 一文彻底明白linux中的selinux到底是什么
安全增强型 Linux(Security-Enhanced Linux)简称SELinux
,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。
在使用了 SELinux 的操作系统中,决定一个资源是否能被访问的因素除了某个资源是否拥有对应用户的权限(读、写、执行)之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。
- SELinux 有三种工作模式,分别是:
enforcing
:强制模式。违反SELinux规则的行为将被阻止并记录到日志中。permissive
:宽容模式。违反SELinux规则的行为只会记录到日志中,一般为调试用。disabled
:关闭SELinux,甚至你都没法使用setenforce
。
SELinux工作模式可以在 /etc/selinux/config
中设定。
如果想从 disabled
切换到 enforcing
或者 permissive
的话,需要重启系统。反过来也一样。 enforcing
和 permissive
模式可以通过 setenforce 1|0
命令快速切换。
需要注意的是,如果系统已经在关闭SELinux的状态下运行了一段时间,在打开SELinux之后的第一次重启速度可能会比较慢。因为系统必须为磁盘中的文件创建安全上下文(我表示我重启了大约10分钟,还以为是死机了……)。
SELinux日志的记录需要借助 auditd.service
这个服务,请不要禁用它。
照着做喽!填坑呗
- 临时性操作
使用root
用户,执行setenforce 0
,此操作只对本次生效,如果想持续性生效,请执行下面的持久性配置修改配置文件
- 持久性配置
如果想要在重启服务器以后仍然生效,请修改配置文件/etc/selinux/config
将SELINUX=enforcing
改为SELINUX=permissive
-
后记,这种操作可能产生安全隐患,但是本文是MySQL的学习文,所有操作都在个人电脑上,所以没有考虑过多的安全问题
坑!Yum-02:
登录失败
报错原因:修改了数据目录
-
[nangy@nangy-vm ~]$ mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
继续找度娘,找到神文:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
- 临时性登录方法
使用参数-h 127.0.0.1
- 临时性登录方法
-