docker安装mysql5.7和mysql数据库增删改查

一、使用docker安装mysql5.7

-- 拉取镜像
docker pull mysql:5.7.31

-- 运行容器
docker run -d  \
--privileged=true \
-p 13306:3306 \
-v /docker/mysql/conf/my.cnf:/etc/my.cnf \
-v /docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456cc --name mysql_5.7 mysql:5.7.31 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

-d: 表示以后台模式运行容器。
–privileged=true: 允许容器以特权模式运行,这通常需要更高的安全性。
-p 13306:3306: 将容器的3306端口映射到宿主机的13306端口,这样你就可以通过宿主机的13306端口访问容器内的MySQL服务。
-v /docker/mysql/conf/my.cnf:/etc/my.cnf: 将宿主机上的/docker/mysql/conf/my.cnf目录挂载到容器的/etc/my.cnf目录,这样容器内的MySQL配置文件就可以使用宿主机上的配置了。
-v /docker/mysql/data:/var/lib/mysql: 将宿主机上的/docker/mysql/data目录挂载到容器的/var/lib/mysql目录,这样容器内的MySQL数据就可以使用宿主机上的数据了。
-e MYSQL_ROOT_PASSWORD=123456cc: 设置环境变量MYSQL_ROOT_PASSWORD为123456cc,这将作为容器内MySQL root用户的密码。
–name mysql_5.7: 给容器指定一个名称mysql_5.7。
mysql:5.7.31: 指定要运行的镜像版本为mysql:5.7.31。
–character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci: 设置MySQL服务器的字符集和排序规则为utf8mb4和utf8mb4_general_ci。

MySQL5.7中添加一个名为g,密码为123456的用户并授权管理员权限的步骤:

进入容器:docker exec -t -i mysql_5.7 /bin/bash
进入msyql:mysql -u root -p
123456cc 输入root密码

1.以root用户登录MySQL数据库:mysql -u root -p
2.创建用户g并设置密码:
CREATE USER 'g'@'localhost' IDENTIFIED BY '123456';

3.授权g用户拥有所有数据库的管理员权限:
GRANT ALL PRIVILEGES ON *.* TO 'g'@'localhost' WITH GRANT OPTION;

4.刷新权限:FLUSH PRIVILEGES;
6删除用户:DROP USER ‘g’@‘localhost’;
7MySQL查看用户,SQL 查询来查看所有用户
SELECT User, Host FROM mysql.user;

在MySQL中,授权和取消授权是关键的数据库操作。授权语句可以用来授予用户特定的权限,同时撤销语句则可以用于撤销已经分配给用户的权限。

在MySQL中,授权和取消授权是关键的数据库操作。授权语句可以用来授予用户特定的权限,同时撤销语句则可以用于撤销已经分配给用户的权限。
具体的授权语句语法如下: GRANT privileges ON database.table TO ‘user’@‘host’ IDENTIFIED BY ‘password’; 其中,privileges表示要授予的权限,可以是多个权限,各个权限之间用逗号分隔;database.table则代表要授权的数据库和表的名称。例如,如果我们想让用户从任何地址都能对数据库进行操作,可以使用以下命令: grant all on . to ‘username’@‘%’ identified by ‘password’;。

对于撤销权限的操作,可以使用 REVOKE 语句。假设我们要撤销之前授予特定用户的权限,可以使用类似以下的语句: REVOKE privileges ON database.table FROM ‘user’@‘host’;。如果我们想撤销之前授予所有数据库的某些权限,并限定远程操作,可以使用以下命令: mysql>flush privileges;。

mysql账号和密码、端口和数据库信息如下:

账号:root
密码:123456cc
端口:13306
数据库:mysql

可以通过以下步骤在mysql进入root后台查询所有库:

1.使用root用户登录mysql后台:mysql -u root -p
2.输入root用户的密码,进入mysql后台。
3.查询所有库:show databases;
4.切换到要查询的数据库:use dbname;
5.查询该数据库中的所有表:show tables;

二、mysql数据库增删改查

mysql数据库的增删改查及联表查询的相关操作

SQL语句创建一个名为students的表
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(255),
age INT,
gender ENUM(‘男’, ‘女’)
);

2.2.1 MySQL常用增删改查操作如下:
1.增加数据:使用INSERT语句,语法格式如下:
INSERT INTO 表名 (字段1, 字段2, …) VALUES (值1, 值2, …);
例如:
INSERT INTO students (id, name, age, gender) VALUES
(1, ‘张三’, 18, ‘男’),
(2, ‘李四’, 19, ‘女’),
(3, ‘王五’, 20, ‘男’),
(4, ‘赵敏’, 21, ‘女’),
(5, ‘孙舞’, 22, ‘男’);

2.删除数据:使用DELETE语句,语法格式如下:
DELETE FROM 表名 WHERE 条件;
例如:DELETE FROM student WHERE id = 1;

3.修改数据:使用UPDATE语句,语法格式如下:
UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2, … WHERE 条件;
例如:UPDATE student SET age = 19 WHERE id = 1;

4.查询数据:使用SELECT语句,语法格式如下:
SELECT 字段1, 字段2, … FROM 表名 WHERE 条件;
例如:
SELECT name, age FROM student WHERE gender = ‘女’;
SELECT * FROM students;

三、MySQL简单三步模拟创建百万数据

1创建数据库
创建测试数据表

创建测试数据表
CREATE TABLE `app_user` (
        `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        `name` VARCHAR(50) DEFAULT'' COMMENT'用户昵称',
        `email` VARCHAR(50) NOT NULL COMMENT'用户邮箱',
        `phone` VARCHAR(20) DEFAULT'' COMMENT'手机号',
        `gender` TINYINT(4) UNSIGNED DEFAULT '0'COMMENT '性别(0:男;1:女)',
        `password` VARCHAR(100) NOT NULL COMMENT '密码',
        `age` TINYINT(4) DEFAULT'0'  COMMENT '年龄',
        `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
        `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT = 'app用户表'

2创建插入函数

-- 写函数之前必须要写,标志
DELIMITER $$
CREATE FUNCTION `mock_data` ()
        RETURNS INT
BEGIN
        DECLARE num INT DEFAULT 1000000;
        DECLARE i INT DEFAULT 0;
        WHILE i<num DO
INSERT INTO app_user(`name`, `email`, `phone`, `gender`, `password`, `age`) VALUES ( CONCAT('用户',i), '[email protected]', CONCAT('18',FLOOR(RAND()*((999999999-100000000)+100000000))), 0,UUID(), FLOOR(RAND()*100) );
                SET i=i+1;
        END WHILE;
        RETURN i;
END;

3执行函数

SELECT mock_data() -- 执行此函数 生成一百万条数据

你可能感兴趣的:(数据库,数据库,docker,mysql)