通过yum方式安装mysql默认安装后,修改data目录就无法启动

本文详细介绍了如何将MySQL默认安装路径下的数据迁移到自定义目录,并解决了因SELinux权限问题导致的服务启动失败。通过调整安全上下文,确保MySQL在新路径下正常运行。
使用yum默认安装的路径:/var/lib/mysql 
现在自定义的其它目录:/opt/programfile/mysql56/mysql3306
新建自定义目录
#mkdir -p /opt/programfile/mysql56/mysql3306
移动mysq默认目录下所有数据到指定目录(备注不能用copy,因为使用copy原目录下的权限可能发生改变)
#mv /var/lib/mysql   /opt/programfile/mysql56/mysql3306
启动mysql
#systemctl start mysqld.service
查看mysql是否运行
#systemctl status mysqld.service

通过yum方式安装mysql默认安装后,修改data目录就无法启动

查看错误日志信息
#sudo journalctl -xe
提示错误:SELinux is preventing ......

通过yum方式安装mysql默认安装后,修改data目录就无法启动

分析:后台服务都需要有对相应目录的对应权限,而 mysql 的默认路
径/var/lib/mysql 已经添加了相应的策略,修改路径后由于没有相应的策略,导   致后台进程读取文件被selinux阻止

解决方法1 :根据上图提示使用semanage命令
1.使用递归传递【(/*)?】
[cqs@centos7 ~]$ sudo semanage fcontext -a -t mysqld_db_t '/opt/programfile/mysql56/mysql3306(/.*)?'
2.使用递归传递【-R】
[cqs@centos7 ~]$ sudo restorecon -R -v '/opt/programfile/mysql56/mysql3306'

解决方法2:使用chcon 命令递归【-R】
[cqs@centos7 ~]$ sudo  -R -t  mysqld_db_t '/opt/programfile/mysql56/mysql3306'
    chcon 命令:修改对象(文件)的安全上下文(如:用户:角色:类型:安全级别)。
    格式:Chcon [OPTIONS…] CONTEXT FILES…..
       -R              递归地修改对象的安全上下文
       -t TYPE     修改安全上下文类型的配置

    最后重新启动电脑
    # reboot
    结果如下所示:success

通过yum方式安装mysql默认安装后,修改data目录就无法启动

在Docker容器内部手动安装MySQL启动它,通常需要以下几个步骤: 1. **创建一个新的Dockerfile**:首先,你需要在一个新的文件夹里创建一个`Dockerfile`,它是Docker构建镜像的基础。在这个文件中,你可以定义如何从基础镜像开始,然后安装MySQL。 ```Dockerfile # 使用官方的MySQL镜像作为基础 FROM mysql:latest # 设置MySQL的root用户密码(此处仅做示例,实际生产环境中应设置更安全的密码) ENV MYSQL_ROOT_PASSWORD=mysecretpassword # 安装所需的软件包,例如Python的pip用于MySQL管理工具 RUN yum update -y && yum install -y python3-pip # 添加必要的环境变量,如MYSQL_DATABASE、MYSQL_USER等 ENV MYSQL_DATABASE=mydatabase \ MYSQL_USER=myuser \ MYSQL_PASSWORD=mypassword # 创建并初始化数据库 COPY ./scripts/create_db.sql /docker-entrypoint-initdb.d/ # 暴露MySQL默认端口 EXPOSE 3306 # 启动MySQL服务 CMD ["mysqld"] ``` 2. **编写`create_db.sql`文件**:如果需要在容器启动时自动创建数据库和用户,可以创建一个SQL脚本`create_db.sql`放在Dockerfile所在的目录下,内容包含创建表和用户的命令。 3. **构建Docker镜像**:在Dockerfile所在的目录运行以下命令,这将创建一个新的镜像,其中包含了MySQL服务器和你的配置。 ```bash docker build -t my-mysql . ``` 4. **运行Docker容器**:使用新构建的镜像运行容器,并指定 `-d` 参数使其在后台运行。 ```bash docker run -p 3306:3306 -v /path/to/data:/var/lib/mysql --name my-mysql-instance my-mysql ``` 这里 `-p` 将主机的3306端口映射到容器内的3306端口,`-v` 将宿主机的数据卷挂载到容器内的数据目录,`--name` 用于给容器命名便于管理和查找。 5. **验证安装启动**:你可以在宿主机上使用`docker ps`查看容器状态,使用`mysql -u [用户名] -p[密码] -h localhost`连接到MySQL
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值