此處搭建好了docker環境;
1.拉鏡像
docker pull mysql:8.0.20
2.啓動
docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.20
3.複製
將容器內mysql的數據配置複製到本機,後面那個路徑就是你想要映射的文件地址
docker cp mysql8:/etc/mysql /home/database/mysql8
建議授權一下文件夾 防止權限問題異常, 進入到root目錄
chmod 777 mysql8
4.刪除舊容器
docker stop mysql8 && docker rm mysql8
5.重新按以下命令啓動
docker run -p 13306:3306 --name mysql8 --privileged=true --restart=always -v /home/database/mysql8/mysql:/etc/mysql -v /home/database/mysql8/logs:/logs -v /home/database/mysql8/data:/var/lib/mysql -v /home/database/mysql8/mysql/mysql-files:/var/lib/mysql-files -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=admin_DEV123 -e MYSQL_DATABASE=baosheng -e MYSQL_USER=lyc -e MYSQL_PASSWORD=lyc_DEV123 -d mysql:8.0.20
6.修改配置文件,重啓容器
進入容器並登錄,如果發現登錄不了;進入mysql8容器
docker exec -it mysql8 /bin/bash
登錄
mysql -uroot -p ,輸入密碼 如發現登錄不了. 輸入 exit 先退出容器;
進入 /root/mysql8.0.20 文件, 編輯 my.cnf, 在[mysqld]增加一行 skip_grant_tables 此時mysql是無密碼狀態
`
docker restart mysql8`
7.進入數據庫
7.1 查看庫表
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> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| component |
| db |
| default_roles |
| engine_cost |
| func |
| general_log |
| global_grants |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| password_history |
| plugin |
| procs_priv |
| proxies_priv |
| role_edges |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
33 rows in set (0.00 sec)
mysql>
7.2 查看用户表
mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | lyc | caching_sha2_password |
| % | root | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
+-----------+------------------+-----------------------+
6 rows in set (0.00 sec)
mysql>
因為 caching_sha2_password ,所以使用密碼登錄是不行的,需要修改
7.3 修改plugin
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'admin_DEV123';
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'admin_DEV123';
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | lyc | caching_sha2_password |
| % | root | mysql_native_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
+-----------+------------------+-----------------------+
6 rows in set (0.00 sec)
mysql>
7.4 刷新權限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql>