Docker-Mysql

1. 新建数据库

sudo docker pull mysql

2. 启动数据库

--name your-mysql-container:指定容器的名称。
-e MYSQL_ROOT_PASSWORD=yourpassword:设置 MySQL 的根用户密码(替换为你想要的密码)。
-p 3306:3306:将主机的 3306 端口映射到容器的 3306 端口。
-d:以分离模式运行容器。
sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=数据库密码 -p 3306:3306 -d mysql

3. 备份数据库

mysqldump -u your_username -p your_database_name > database_backup.sql

4. 注意事项

  • 安装Mysql后设置lower_case_table_names属性报错

在MySQL8.0版本中,必须在初始化MySQL服务器之前将lower_case_table_names设置为所需要的值,这需要在首次启动MySQL服务器之前在MySQL配置文件中设置lower_case_table_names。但是在使用ubuntu的apt源安装MySQL时,系统会自动配置并启动MySQL服务器,这就需要在安装前提前设置好配置文件。具体操作步骤如下:

<!--设置 Mysql 初始化环境-->
sudo mkdir/etc/mysql/mysql.conf.d
sudo vim mysqld.cnf

<!--编辑mysqld.cnf文件-->
[mysqld]
# 0[Linux默认]:区分大小写;
# 1[Windows默认]:不区分大小写;
# 2[Mac默认]:存储时区分大小写,比较时不区分大小写。
lower_case_table_names=1
innodb_log_file_size = 512M 
innodb_strict_mode = 0
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"

<!--安装Mysql,在安装过程中会提示存在配置文件,此时选择‘N’选项采用已经存在的配置文件-->
sudo apt install mysql-server

<!--Mysql配置,可根据需求设定-->
sudo mysql_secure_installation

<!--设置root账号密码,第一次设置时默认无密码,直接进入mysql-->
sudo mysql -u root

<!--登录后设置root密码-->
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysql密码';

<!--刷新设置-->
FLUSH PRIVILEGES;

<!--重启Mysql服务-->
sudo systemctl restart mysql

<!--使用密码登录root账号-->
sudo mysql -u root -p

<!--输入密码-->

<!--进入Mysql环境-->
  • 设置用户可以远程登录MySQL
<!--使用密码登录root账号-->
sudo mysql -u root -p

<!--输入密码-->

<!--进入Mysql环境-->
<!--设置root用户可远程访问-->
UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
<!--刷新权限-->
FLUSH PRIVILEGES;
<!--查看权限-->
SELECT Host, User FROM mysql.user;

ubuntu18.04 安装mysql8.0报错

错误:1 http://repo.mysql.com/apt/ubuntu bionic InRelease                       
  由于没有公钥,无法验证下列签名: NO_PUBKEY B7B3B788A8D3785C
  • 解决办法: 切换为交大源。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

SHOW VARIABLES LIKE 'validate_password%';
SET GLOBAL validate_password.policy = LOW;  -- 选择 LOW, MEDIUM 或 STRONG
SET GLOBAL validate_password.length = 6;     -- 设置最小长度
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword123!';

忘记密码

  • 停止mysql服务
sudo systemctl stop mysql
  • 启动 MySQL 的安全模式
sudo mysqld_safe --skip-grant-tables &
  • 使用 root 登录 MySQL
mysql -u root
  • 修改密码
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;
  • 退出并重启mysql服务
sudo systemctl start mysql