
docker 启动一个mysql服务 & mysql忘记密码如何处理?
这种用户密码加密方式是可以用过查看mysql.idb 文件查找mysql_native 来定位密码,然后再md5解密网站进行解密,简单的密码可以直接解析,复杂可能需要密码字典表。第二种: 如果密码的加密方式是sha2,那是无法破解的,mysql对密码进行了加盐操作,加密的时候会使用随机数进行加密,随机数是多少你是不知道的。mysql登录命令 mysql -uroot -p 和mysql -u ro
目录
一、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) #修改密码
更多推荐
所有评论(0)