关于用户
创建用户
-- 语法
CREATE USER '用户名'@'主机地址' IDENTIFIED with 加密方式 BY '密码';
-- 加密方式(不写默认为当前mysql版本的加密方式)
--mysql5.7左右为mysql_native_password
--mysql8.0以上为caching_sha2_password
--秘钥对生成方式:
--1)自动生成
--参数 caching_sha2_password_auto_generate_rsa_keys 默认是开启,数据库在启动时自动生成相对应的公钥和私钥。
--2)手动生成
--通过 mysql_ssl_rsa_setup 指定目录生成 SSL 相关的私钥和证书以及 RSA 相关的公钥和私钥。
--2.2 查看 RSA 公钥值的方式:
--通过状态变量 Caching_sha2_password_rsa_public_key 可以查看 caching_sha2_password 身份验证插件使用的 RSA 公钥值。
-- 例子:创建一个text用户,密码为root'
CREATE USER text IDENTIFIED BY 'root'; -- 当不指定主机地址时,主机地址默认为%。代表所有地址都可以使用该用户。
-- 例:创建dev用户,指定地址为localhost,密码为123456。代表只有本机才可以使用dev用户。
CREATE USER 'dev'@'localhost' IDENTIFIED BY '123456';
-- 例:创建pro用户,指定地址为192.168.1.%,密码为123456。代表只有192.168.1.xxx段的网络才可以使用pro用户。'
CREATE USER 'pro'@'192.168.1.%' IDENTIFIED BY '123456';
修改用户(用户名、主机地址、密码等)
-- 修改语句
-- 修改localhost地址下的test用户的密码为123456
set password for 'test'@'localhost'= PASSWORD('123456');
flush privileges; -- 刷新密码
-- 修改mysql用户密码加密策略和用户密码
alter user '用户名'@'主机地址' password with '加密策略' by '新密码';
--例
--mysql5.7左右为mysql_native_password
--mysql8.0以上为caching_sha2_password
alter user 'root'@'localhost' password with mysql_native_password by '123456'
-- 修改mysql用户密码永不过期(mysql8.0:如果my.ini文件中设置了密码过期天数,后面创建的用户没有设置密码永不过期的话,都默认为密码全局过期策略天数)
alter user 'root'@'localhost' password expire never;
--修改localhost下的test用户的主机地址为%'
UPDATE mysql.`user` u SET u.`Host` = '%' WHERE u.`User` = 'test' AND u.`Host` = 'localhost';
-- 修改localhost下的test用户的用户名为dev
UPDATE mysql.`user` u SET u.`User` = 'dev' WHERE u.`User` = 'test' AND u.`Host` = 'localhost';
删除用户
提示:直接去mysql数据库的user表中删除有时候并没有用。
-- 删除语句
-- 删除localhost下的dev用户
DROP USER 'dev'@'localhost';
flush privileges; -- 刷新
用户授权
文章链接: Mysql授权其他用户操作数据库或表权限语句
数据库操作
-- 当数据库aaa不存在时创建。字符集为utf8,列排序规则为utf8_general_ci
CREATE DATABASE IF NOT EXISTS aaa CHARACTER SET utf8 COLLATE utf8_general_ci;
-- 修改数据库字符集(可解决中文乱码问题)
alter database aaa CHARACTER SET utf8 COLLATE utf8_general_ci;
-- 数据库存储信息中存在表情,则需使用utf8mb4和utf8mb4_general_ci
alter database aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 删除数据库
DROP DATABASE IF EXISTS aaa;
表操作
-- 创建表
CREATE TABLE `test` (
`id` int(10) NOT NULL AUTO_INCREMENT, -- 非空,自增长
`name1` varchar(80) CHARACTER SET utf8mb4 DEFAULT NULL, -- utf8mb4可以存表情,因为表情是4个子节
PRIMARY KEY (`id`) -- 多个主键使用逗号隔开
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
-- 修改表编码
alter table 表名 character set utf8 COLLATE utf8_general_ci;
-- 修改表字段名称及数据类型及长度
ALTER TABLE aaa.test CHANGE 旧名称 新名称 数据类型及长度;
-- 例如:
ALTER TABLE aaa.test CHANGE name name1 VARCHAR(100);
-- 修改字段编码
ALTER TABLE 表名 MODIFY 列名 数据类型及长度 CHARACTER SET 编码名 COLLATE 列排序编码名;
-- 例如
ALTER TABLE aaa.test MODIFY name1 VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_general_ci;
-- 删除表
DROP TABLE IF EXISTS 表名;
-- 例如
DROP TABLE IF EXISTS aaa.test1;
数据操作
-- 查询语法
select * from 表名;
-- 例子
select * from aaa.u;
-- 插入语法
insert into 表名 (列名,列名) values (...),(...)... -- 指定数据列
insert into 表名 values (...),(...)... --不指定数据列
-- 例子 假设表u有三个字段。id name sex
insert into aaa.u (id,name) values (1,'zhangsan'),(2,'lisi'); -- 指定数据列
insert into aaa.u values (1,'zhangsan','男'),(2,'lisi','女'); -- 不指定数据列
-- 更新语法
update 表名 set 列名 = 新值,列名 = 新值,... where 某列 = 某值;
-- 例子
update aaa.u set id = 100,name = '更新',sex = '未知' where id = 2;
-- 删除语法
DELETE FROM 表名 WHERE 列名 = 值;
-- 语法
delete from aaa.u where id = 2;