Skip to main content

moregeek program

docker mysql8修改root密码方法_winjayx的博客-多极客编程

Docker MySQL8修改root密码方法


1. 启动脚本信息


[root@mysql]# cat docker_start_Mysql_WinJay.sh 
docker rm -f MySQL8.0_DB
docker container run -d \
--volume /etc/localtime:/etc/localtime:ro \
--volume `pwd`/data:/var/lib/mysql \
--volume `pwd`/conf:/etc/mysql/conf.d \
--user root \
--name MySQL8.0_DB \
--restart always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=Qwe!1@2#3 \
mysql \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--explicit_defaults_for_timestamp=true \
--lower_case_table_names=1 \
--max_allowed_packet=128M \
--default-authentication-plugin=mysql_native_password

2. 持久化数据信息


image-20220920091129150


重置密码


1. 修改配置文件


# 二进制安装的是修改my.cnf文件,在/etc/my.cnf下,具体根据自己系统查找;
# 如果跟我一样是Docker版的MySQL,需要修改对应容器内的/etc/mysql/conf.d/docker.cnf这个文件;
# 由于我已经将‘--volume `pwd`/conf:/etc/mysql/conf.d’持久化出来了,所以在宿主机上直接编辑修改
# 注:配置后只可单点登录,远程无法连接。

vim conf/docker.cnf


  • 在最后新增 skip_grant_tables,完成后如下:

[root@mysql]# cat conf/docker.cnf 
[mysqld]
skip-host-cache
skip-name-resolve
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUT

skip_grant_tables

2. 重启服务



  • 修改完配置文件后需要重新启动MySQL容器。

[root@StorageClass mysql]# ./docker_start_Mysql_WinJay.sh 
MySQL8.0_DB
62c539c2b129d122e7b29366358213e8f1b06ec935a1a3fabbd8151853538960

image-20220920091957542


3. 进入容器重置密码


[root@StorageClass mysql]# docker exec -it MySQL8.0_DB /bin/bash
root@305636cc3283:/# mysql -u root -p
Enter password: #此处可以直接回车即可进入;跳过mysql权限验证
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 8.0.29 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
# 由于权限认证没有重新加载,执行修改密码语句后会报错。
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges; #重新加载权限
Query OK, 0 rows affected (0.03 sec)


mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
# 再次修改root账户密码
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql>
mysql> exit # 重置完成,退出MySQL
Bye
root@62c539c2b129:/# exit # 重置完成,退出容器
exit


image-20220920092102151


ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

# 将root的密码修改为:123456

image-20220920095029275


4.恢复配置文件



  • 将步骤1中新增的 skip_grant_tables字段注释或删除掉,然后再次重启容器。

[root@StorageClass mysql]# ./docker_start_Mysql_WinJay.sh 
MySQL8.0_DB
305636cc3283a45d8b6791cd0fd23e0701b93f68b33f447ef40d5ffd044929d9

image-20220920093951441


5. 再次登录验证测试


[root@StorageClass mysql]# docker exec -it MySQL8.0_DB /bin/bash
root@305636cc3283:/# mysql -u root -p
Enter password: # 此处仍然使用空密码登录测试,下面给出报错。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
root@305636cc3283:/# mysql -u root -p
Enter password: # 此处使用修改的密码'123456'登录测试成功
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 8.0.29 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| ams |
| information_schema |
| lit_inf_sys_db |
| mysql |
| nacos |
| performance_schema |
| sys |
| xxl_job |
+--------------------+
8 rows in set (0.01 sec)

mysql>


image-20220920094250050


6. 总结


本文在mysql8和mysql5.7两个版本均成功测试,相应的mysql安装目录和my.ini配置文件目录请务必根据自己安装情况进行更改。例如在跳过权限认证时,如果是在mysql5.7版本的默认安装下,应该修改为“mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" --console --skip-grant-tables --shared-memory”。


配置远程连接


1. 查看用户信息


mysql> select host, user, authentication_string, plugin from user;

image-20220920103727602


2. 删除root用户远程连接



  • 由于当前配置的root用户的远程连接密码并不清楚,所以只能重新授权开放,需要先删除现有的信息;
  • 运行以下 SQL 脚本,以删除“root”用户从远程主机的所有访问权限

mysql> DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');


  • 删除后重新对比,看到已经删除成功了。

image-20220920111019964


3. 更新授权


mysql> update user set host = '%' where user = 'root';

Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0


  • 再次对比查看:条数不变,但root用户已经授权完成。

image-20220920111221453


4. 远程连接验证


image-20220920112657383


GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Qwe!1@2#3' WITH GRANT OPTION;

更新表


select id,uid,job_num,account_name,card_no,bank_name from f_bank_account;

update f_bank_account set card_no=8888888888888888;



select id,username,email,id_card_no,phone,real_name from user;
# 更新多个字段,使用','号分隔,并非使用and语句。
update user set email='test@mail.com',id_card_no=110108888888888888,phone=18888888888;

©著作权归作者所有:来自51CTO博客作者WinJayX的原创作品,请联系作者获取转载授权,否则将追究法律责任

如何实现数据库读一致性_京东云官方的博客-多极客编程

1 导读数据的一致性是数据准确的重要指标,那如何实现数据的一致性呢?本文从事务特性和事务级别的角度和大家一起学习如何实现数据的读写一致性。2 一致性1.数据的一致性:通常指关联数据之间的逻辑关系是否正确和完整。举个例子:某系统实现读写分离,读数据库是写数据库的备份库,小李在系统中之前录入的学历信息是高中,经过小李努力学习,成功获得了本科学位。小李及时把信息变成成了本科,可是由于今天系统备份时间较长

数据火器库 - 八卦系列之借老枪谈可靠性_阿里云情报局的博客-多极客编程

​​来源:云数据库技术​​数据库打工仔喃喃自语的八卦1. 老枪:Db2/z和可靠性2. K.I.S.S (Keep it Simple, Stupid!)3. 系统验证和测试:猪肉出厂的质检章数据库的可靠性1、数据库里的老枪 - Db2 for zOS上次聊了瑞士军刀SQLite, 从年纪上SQLite出生于大数据和手机时代之前,对比后来的大数据引擎和云原生数据库,SQLite可谓个头不大,辈分不

lua脚本在redis事务中的应用实践_京东云官方的博客-多极客编程

使用过Redis事务的应该清楚,Redis事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务中的命令要么全部被执行,要么全部都不执行(原子操作)。但其中有命令因业务原因执行失败并不会阻断后续命令的执行,且也无法回滚已经执行过的命令。如果想要实现和MySQL一样的事务处理可以使用Lua脚本来实现,Lua脚本中

sql数据分析—查询银行账户余额明细列表_吴明课堂的博客-多极客编程

从系统导出了公司银行卡的初期信息和收款付款明细数据,接下来要用SQL去对它做查询和分析。一. 已有数据图示:账户期初金额收款明细付款明细​二. 查询目标数据列表图示:想要实现的查询结果​三. 银行余额算法逻辑说明:上期结转金额(查询结果第一行的银行余额) = 查询日前一日的余额,本处业务发生日为2022/07/01,所以上期结转金额等于期初金额。若查询开始日为2022/08/01,则上期结转金额为

mysql面试题(三)_蓦然的博客-多极客编程

27、索引的底层实现原理和优化B+树, 经过优化的B+树主 要是在所有的叶子结点中增加了指向下一个叶子节点的指针,  因此InnoDB 建 议 为大部分表使用默认自增的主键作为主索引。28、什么情况下设置了索引但无法使用1、  以 “ % ” 开 头 的 LIKE 语 句 ,  模 糊 匹 配2 、  OR 语 句 前 后 没 有 同 时 使 用 索 引3 、数 据 类 型 出 现 隐式转化(如

mysql面试题(四)_蓦然的博客-多极客编程

38、  Myql 中的事务回滚机制概述事务是用户定义的一个数据库操作序列, 这些操作 要么全做要么全不做, 是一个不可分割的工作单位, 事务回滚是指将该事务已经完成的对数据库的更新 操作撤销。要同时修改数据库中两个不同表时, 如果 它们不是一个事务的话,  当第一个表修 改完, 可能第二个表修改过程中出现了异常而没能修改, 此时就只有第二个表依 旧是未修改之前的状态, 而第一个表已经被修改完毕。

oh-my-zsh,让你的终端从未这么爽过_雍州无名的博客-多极客编程

1.oh my zshshell的类型有很多种,linux下默认的是bash,虽然bash的功能已经很强大,但对于以懒惰为美德的程序员来说,bash的提示功能不够强大,界面也不够炫,并非理想工具。 而zsh的功能极其强大,只是配置过于复杂,起初只有极客才在用。后来,有个穷极无聊的程序员可能是实在看不下去广大猿友一直只能使用单调的bash, 于是他创建了一个名为oh-my-zsh的开源项目... 自

如何实现数据库读一致性_京东云官方的博客-多极客编程

1 导读数据的一致性是数据准确的重要指标,那如何实现数据的一致性呢?本文从事务特性和事务级别的角度和大家一起学习如何实现数据的读写一致性。2 一致性1.数据的一致性:通常指关联数据之间的逻辑关系是否正确和完整。举个例子:某系统实现读写分离,读数据库是写数据库的备份库,小李在系统中之前录入的学历信息是高中,经过小李努力学习,成功获得了本科学位。小李及时把信息变成成了本科,可是由于今天系统备份时间较长

如何实时计算中证1000指数的主买/主卖交易量_dolphindb的博客-多极客编程

主买是指以卖方的报价成交,主卖是指以买方的报价成交。 一般来说,主动买入就是资金流入,主动卖出就是资金流出,所以实时统计主买/主卖交易量能够实时监控资金的流入流出情况。本文基于中证 1000 指数,介绍如何利用 DolphinDB 流数据处理框架,实时高效计算中证1000指数的主买/主卖交易量。本文包含场景概述、实现思路、实时计算主买/主卖交易量、结果展示等部分。1. 场景概述本文介绍如何使用 D

在windows10上通过nomachine连接kali的远程桌面_雍州无名的博客-多极客编程

对于需要经常远程到X windows的网友来说,VNC与Xmanager经常被使用,而NoMachine也是不错的选择之一,该工具简单,易用,尤其是在低带宽、慢速率的网络环境下工作性能良好。本文描述了NoMachine的快速安装与使用。1.NoMachine介绍NoMachien能使用户从另一台计算机访问和控制远程的Windows,Linux PC或Mac电脑,实现工作或娱乐等操作。NoMachi

在kubernetes中部署java应用_雍州无名的博客-多极客编程

1.环境准备安装jdk1.8安装maven2.部署java应用首先下载demo:​​https://github.com/lizhenliang/tomcat-java-demo​​解压unzip tomcat-java-demo-master.zip将数据库脚本导入数据库:/root/tomcat-java-demo-master/db/tables_ly_tomcat.sql修改配置文件app

原生redis跨数据中心双向同步优化实践_京东云官方的博客-多极客编程

一、背景公司基于业务发展以及战略部署,需要实现在多个数据中心单元化部署,一方面可以实现多数据中心容灾,另外可以提升用户请求访问速度。需要保证多数据中心容灾或者实现用户就近访问的话,需要各个数据中心拥有一致的全量数据,如果真正实现用户就近读写,也就是实现真正的业务异地多活,数据同步是异地多活的基础,这就需要多数据中心间数据能够双向同步。二、原生redis遇到的问题1、不支持双主同步原生redis并没