docker 下的mysql 容器,使用 mysql -uroot -p,无法进入!

在Docker环境下,不能使用service和systemctl管理MySQL。要解决无法用`mysql -uroot -p`登录的问题,需停止并删除MySQL容器,启动时添加`/usr/sbin/init`。然后通过`docker exec`进入容器,检查MySQL状态。如果未启动,使用`/etc/init.d/mysqld start`启动。由于初始root无密码,需编辑`my.cnf`跳过验证,重启MySQL后才能成功登录,并修改root密码及授权。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,在docker环境下, mysql 是无法使用 service 和 systemctl .

1、关闭 mysql 容器,并删除 mysql 容器。

docker stop 容器id

docker rm  容器id

2、启动mysql 容器时,加上  /usr/sbin/init

   docker run -d -p 3306:3306 --net=env10 --ip=192.168.10.4 --restart=always --name 自定义容器名  mysql镜像名  /usr/sbin/init

3、进入 mysql 容器
    docker  exec -it  容器名   /bin/bash

4、查看mysql 状态
      /etc/init.d/mysqld status

5、如果没有启动,那start
     /etc/init.d/mysqld start

6、 登录mysql  
    mysql  -uroot -p 
   提示输入密码,默认root 是没有密码的,直接回车。 报错:
   “Access denied for user 'root'@'localhost' (using password: NO”
7、bianji  my.cnf  添加 跳过验证,在my.cnf   最后一行加上:
     
    vim  /etc/my.cnf   (没有 vim,可以 安装 centos方式 : yum -y install vim*  ,ubuntu 方式: sudo apt-get install vim-gtk )
    #添加如下内容
     skip-grant-tables

8、 /etc/init.d/mysqld restart

9、 mysql  -uroot -p   回车  成功登录 mysql

10、修改 root 的密码、已经远程登录的权限 
 

use mysql;
update user set host='%' ,password=password('123345')   where user='root';

/*
##[mysql 5.7 的修改语句, 5.7 没有 password 字段了,变成了 authentication_string ]*/
update user set host='%' ,authentication_string=password('123345')  where user='root';



   ##授权

grant  all privileges on *.*  to  root@'%'  identified  by '123456' with  grant  option;

  ##刷新权限

 flush privileges;

结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值