目录

一、pull官方镜像

二、查看镜像

三、运行容器(开启mysql服务)

四、如何登陆到客户端

忘记密码解决方法:

五、Mysql 常用命令

mysql -u root -p**

查看数据库

查看参数

查看mysql增删改查提交回滚数量

六、正常安装步骤


一、pull官方镜像

选择一个指定的版本,或者直接拉去最新的mysql版本。

docker pull mysql:5.7   # 拉取 mysql 5.7
docker pull mysql       # 拉取最新版mysql镜像

二、查看镜像

docker images

 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
wordpress    php7.4    ccd598bc2c91   2 months ago   616MB
mysql        5.7       938b57d64674   3 months ago   448MB

三、运行容器(开启mysql服务)

最后冒号后面的是tag,就是版本,如果安装有多个版本的mysql是不是启动起来很方便。

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql:8.0.22

容器销毁实例上的数据也会随之消失,所以需要将mysql 的数据目录映射在本地。

/opt/mysql 为宿主机目录 - >  存放数据的目录

/opt/mysql/conf -> my.cnf 配置

/opt/mysql/logs -> mysql log

  • -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录
docker run -p 3306:3306 --name mysql \
-v /opt/mysql/conf:/etc/mysql \
-v /opt/mysql/logs:/var/log/mysql \
-v /opt/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

docker ps查看启动的mysql进程

四、如何登陆到客户端

docker exec -it 91521db55888 bash  进入容器中

mysql -uroot -p 登录mysql

拉去的是最新版本的mysql 8.0.27 

登录时报错:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:

忘记密码解决方法:

在容器中修改my.cnf 并重启容器. /etc/mysql/my.cnf

 如果容器中没有vim,用以下命令安装

apt-get update

apt-get install vim

注: skip-grant-tables跳过授权表,也就是说谁都能进入mysql看到所有数据表,输入任意字符账号密码都可以。 这个显然是不安全的。

--update 2022年1月17日10:17:58

mysql 5.7之后都会有一个临时密码,grep 'temporary password' /var/log/mysqld.log 获取旧密码,

然后修改掉这个密码mysqladmin -uroot -p"old password" password (ninesun0318)

docker启动的mysql的mysqld.log 放在什么位置?...

--update 2023年8月7日23:04:32

mysql登录命令 mysql -uroot -p 和mysql -u root -p 有什么区别

????

--update 2023年8月7日23:04:50

mysql 8.0 的root密码忘记了有两种方式解决:

第一种: 如果用户的密码加密方式是native的

 这种用户密码加密方式是可以用过查看mysql.idb 文件查找mysql_native 来定位密码,然后再md5解密网站进行解密,简单的密码可以直接解析,复杂可能需要密码字典表。

第二种: 如果密码的加密方式是sha2,那是无法破解的,mysql对密码进行了加盐操作,加密的时候会使用随机数进行加密,随机数是多少你是不知道的。

这个时候你就需要回忆一下,mysql 的密码校验是在哪个阶段?

mysql的用户验证是在连接层,那是否可以在mysql 启动的时候跳过连接层的这个用户验证呢?

可以,mysql提供了--skip-grant-tables 来跳过权限检查。

问题来了,跳过权限检查相当于任何用户都可以进入数据库!!!!! 如何处理?

mysql设计的时候就考虑到了。 提供了安全的方式启动数据库。 --skip-networking 意思就是不允许tcp/IP 协议连接数据库。

mysqld_safe --skip-grant-tables --skip-networking &

登陆数据库后刷新授权表
flush privileges;
修改密码
mysql> alter user root@'localhost' identified with mysql_native_password by
'123';

直接修改会报错,因为权限表没加载。flush privileges 类似于手动加载授权表(开启用户验证功能)。

重启数据库到正常模式
[root@localhost data]# /etc/init.d/mysqld restart

 

五、Mysql 常用命令

登录mysql

mysql -u root -p**

查看数据库

show databases

查看参数

show variables  查看全部参数.

如果需要查看某个参数,可以使用like

查看mysql增删改查提交回滚数量

mysqladmin extended-status 

]# mysqladmin -uroot -p... extended-status | egrep "Com_insert|Com_delete|Com_update|Com_update|Com_commit|Com_rollback"
Warning: Using a password on the command line interface can be insecure.
| Com_commit                                    | 312548213      |
| Com_delete                                    | 119339         |
| Com_delete_multi                              | 0              |
| Com_insert                                    | 598940616      |
| Com_insert_select                             | 0              |
| Com_rollback                                  | 0              |
| Com_rollback_to_savepoint                     | 0              |
| Com_update                                    | 96513367       |
| Com_update_multi                              | 0              |


六、正常安装步骤

wget ftp://172.16.8.100/yumrepo/centos.repo -P /etc/yum.repos.d/
wget ftp://172.16.8.100/yumrepo/mysq157.repo -P /etc/yum.repos.d/
yum -y install lftp vim-enhanced bash-completion
#Firewall& selinux
systemctl stop firewall; systemctl disable firewall
setenforce 0; sed -ri/SELINUX/C\SELINUXedisabled /etc/selinux/config
#ntp 校时服务
yum -y install chrony
sed -ri '/3.centos/a\server 172.16.8.100 iburst' /etc/chrony.conf #sed a代表追加
systemctl start chronyd; systemctl enable chronyd
#install mysql5.7
yum -y install mysql-community-server
systemctl start mysqld
systemctl enable mysqld
grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}'>/root/mysqloldpass.txt #获取旧密码 
mysqladmin -uroot -p"`cat /root/mysqloldpass.txt`" password(ninesun0318) #修改密码

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐