centos7镜像下绕过systemctl限制,即不添加/usr/sbin/init参数,安装mysql

考虑到容器化技术的设计和限制,CentOS 7 镜像对 systemd 有一些限制,并不支持直接运行 systemctl。但在 CentOS 7 的镜像中,想要使用 systemctl 启动 mysql 服务,必须要在创建容器的时候添加参数--privileged=true /usr/sbin/init
在添加了 /usr/sbin/init 作为启动参数情况下,在启动容器时,会跳转到一个文本模式的登录界面,要求用户登录。这通常是因为这时的 CentOS 7 镜像默认配置为运行一个完整的系统环境,包括登录管理器。
只要想要/usr/sbin/init,就必须接收文本模式的登录界面。
这一问题可能有多种解决方法,比如说设置自动登录,避免弹出登录界面,或者编写一些 Dockerfile 构建支持 systemd 的镜像,也可以直接找一些支持 systemd 的镜像。这里给出一个不需要重新构建镜像的方法。

具体步骤

  1. 更新并安装必要工具 yum update yum install -y yum-utils

  2. 安装mariadb yum install mariadb-server mariadb

    1. yum install mysql-server mysql不行,其实只安装了mariadb
  3. 找 mysqld_safe 位置find / -name mysqld_safe ,我的在/usr/bin/mysqld_safe

  4. 安全启动,并查看结果 /usr/bin/mysqld_safe --user=mysql cat /var/log/mariadb/mariadb.log 在这里插入图片描述在这里插入图片描述

  5. 配置数据库 mysql_install_db --user=mysql 在这里插入图片描述

  6. 查找mysqld find / -name mysql* ,我的在/usr/libexec/mysqld

  7. 启动 mariadb 服务 /usr/libexec/mysqld --skip-grant-tables --user=mysql & 在这里插入图片描述

  8. 配置数据库mysql_secure_installation 。按一般流程安装就可以了 在这里插入图片描述

  9. 之后就可以正常登录了 mysql -u root -p

  10. 可以创建一个数据库和表测试一下

CREATE DATABASE mydatabase;
USE mydatabase;
CREATE TABLE test_table (  
    id INT AUTO_INCREMENT PRIMARY KEY,  
    name VARCHAR(255) NOT NULL,  
    age INT  
);
INSERT INTO test_table (name, age) VALUES ('Alice', 25);  
INSERT INTO test_table (name, age) VALUES ('Bob', 30);
SELECT * FROM test_table;
  1. 之后每次想开启mysql服务的话,只要再运行 /usr/libexec/mysqld --user=mysql &就可以了

一些其他的命令

# 关闭mysql服务
mysqladmin -u root -p shutdown

# 查看mysql服务开启情况
ps aux | grep mysqld

#查看是否安装mariadb
yum list installed | grep mariadb
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值