运行 MySQL 安全设置:使用临时密码登录 MySQL(看看可不可以用),然后在shell中运行安全设置程序来配置 root 密码等安全选项:mysql_secure_installation(先完成密码重置)
表数据一般,放在/var/lib/mysql中
我想设置简单密码,但是必须要完成密码重置后才可以
登录 MySQL :查看密码策略设置:SHOW VARIABLES LIKE 'validate_password%';
修改密码策略(可选):
设置密码策略为 LOW :SET GLOBAL validate_password.policy = LOW;设置最小密码长度为 6 :SET GLOBAL validate_password.length = 6;可以选择降低对特殊字符和数字的要求 :SET GLOBAL validate_password.mixed_case_count = 0; SET GLOBAL validate_password.number_count = 0; SET GLOBAL validate_password.special_char_count = 0;更改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '简单密码';
### 插入:insert into 表
* insert into 表(表内字段)values (对应字段的值);
* 不给定字段就表示表内所有字段:insert 表 values (按照顺序一次插入);
* 多条数据插入:insert into 表(表内字段)values (对应字段的值),(对应字段的值);
* 注意值的数据类型
复制代码
### 更新:update 表 set
* update 表 set 列名=值 where 条件;(按照条件行,修改对应列单元格值,如果没有条件就是整列)
复制代码
### 删除:delete from 表(删除行数据)
* delete from 表 where 条件;(不加条件删整个表的数据)
第四章:sql数据库查询语言DQL
复制代码
### 简单查询
* select \*/列名(逗号隔开) from 表名;
* select 列名\*6 from 表名;(还可以四则运算查询)
复制代码
### 条件查询where
*
#### 单条件
* select 查看的列 from 表 where 条件;
* 可以使用=,\<,\>,\>=,\<=,!=/\<\>
* 
*
#### 多条件and/or
* select 查看的列 from 表 where 条件1 and/or 条件2......;and表示同时满足,or表示满足一项就可以了。
* 
*
#### 关键字between and闭区间
* select 查看的列名 from 表名 where 列名 between 开始 and 结束;在范围之中。
* 
*
#### 关键字in集合查询。
* select 查看列 from 表 where 条件列 in (匹配值,逗号分开);
* 
*
#### 关键字is null/is not null,查询是否为空的值
* select 查看列 from 表 where 条件列 is null;(注意空格也是字符,可以通过length(列),查看空格多少,中英文1个字符)
* 
*
#### 关键字like模糊查询(%表示任意个(0到任意),_任意一个和shell脚本一样)
* select 查看列 from 表 where 列 like "%"
* 
复制代码
### 查询排序
* select 查看列 from 表 order by 排序的列名(可以多列)asc(升序)/desc(降序)【limit 数字(表示排序到后的前几位,limit可以单独用但是要放到最后,比order还要后)】;(要知道,因为是排序,所以肯定是最后操作,所以排序放在其它操作最后)
* 
复制代码
### 子查询
* 将select语句的结果看做参数用(无论关键字是否有了()比如in,都建议在子查询外添加括号)包括,比如select \* from (select \* from 表 limit 30);这里将子查询的结果当做了表
* 
复制代码
### 多表查询
第五章:sql数据库控制语言DCL
复制代码
### DCL
*
#### 权限级别
* global level:全局权限,所有表所有库
* database level:数据库权限
* table level:数据表权限
* column level:表中某个字段的权限
*
#### mysql用户管理
* 在 MySQL 数据库中,用户账户的信息存储在 **`mysql`** 数据库中的 **`user`** 表中。`user` 表中保存了所有 MySQL 用户的权限、认证方式、密码以及其他相关信息。(root下)
*
##### 创建用户:
* create user '用户名'@'指定登录主机' identified by '密码';
* `用户名`:是你要创建的用户名。
* `指定登录主机`:表示允许该用户从哪个主机进行连接。常用的选项:
* `'localhost'`:只允许从本地主机连接。
* `'%'`:允许从任何主机连接。
* 密码:必要大小写数字符号且8位
*
##### 删除用户:
* drop user '用户名'@'指定主机';
* 
*
##### 修改用户密码:
* select user();查看当前登录用户
* 方法1:alter user '用户名'@'指定主机' identified\[译为验证\] by '新密码';
* 方法2:set password for '用户名'@'指定主机'= '新密码';
* 方法3:mysqladmin -u root -p'与-p没有空格' password '新密码有空格';
* 丢失root密码怎么办?
* vim /etc/my.cnf添加skip-grant-tables(启动mysql时跳过授权密码)
* 重启mysqld服务
* 进入mysql -u root
* update mysql.user set authentication_string='' where user='root';修改系统用户密码为空
* vim /etc/my.cnf取消之前的skip-grant-tables
* 进入系统修改root密码
* 方法1:set password for '用户'@'localhost'='密码';
* 方法2:alter user '用户名'@'主机' identified by '密码';
*
##### 登录mysql:mysql -u username -p '密码' 【数据库名,直接进入数据库】
* 如果需要从远程登录 MySQL,请确保 MySQL 服务器的配置允许外部连接,并使用对应的 `host` 参数:mysql -u username -p -h IP地址
* -P:端口,mysql默认3306端口
* -e 'sql命令':免登录mysql直接执行数据库后面是命令
*
#### mysql权限原理
* grant(给予)/revoke(撤销) 权限列表 on 数据库名.表名 to/from(取消用from) '用户名'@'主机' \[IDENTIFIED BY '密码'\] \[WITH GRANT OPTION\];{使用\*可以设置整个数据库或者这个dbms中的所有数据库}
* 
* 
* revoke/grant 权限 (列名) on 数据库名.表名 to/from(取消用from) '用户名'@'主机';
* **权限列表**:指定要授予的权限,可以是以下任意一个或多个:
* `ALL PRIVILEGES(all也可以)`:授予所有权限。
* `SELECT`:允许查询数据。
* `INSERT`:允许插入数据。
* `UPDATE`:允许更新数据。
* `DELETE`:允许删除数据。
* `CREATE`:允许创建新数据库和表。
* `DROP`:允许删除数据库和表。
* `GRANT OPTION`:允许将自己的权限授予其他用户。
* **ON 数据库名.表名**:指定权限应用于哪个数据库和表。
* 如果是对整个数据库授予权限,可以使用 `数据库名.*`。
* **TO '用户名'@'主机'**:指定要授予权限的用户及其主机。
* `用户名`:要授予权限的用户名。
* `主机`:指定用户可以从哪个主机连接,常用的有 `localhost`(仅本地主机)和 `%`(任意主机,ip,%,网段+%都可以)。
* **\[IDENTIFIED BY '密码'\]** :可选项,通常在创建用户时使用,表示设置用户的密码。注意:在使用 `GRANT` 语句时,如果用户已经存在,则通常不需要这个选项。
* **\[** WITH GRANT OPTION**\]** :可选项,通常用于授予 `GRANT OPTION` 权限,允许用户将他们所拥有的权限授予其他用户。
* **转授的限制**:
* 用户只能转授他们自己拥有的权限。例如,如果某用户只拥有 `SELECT` 权限,则他们不能授予其他用户 `UPDATE` 或 `DELETE` 权限。
* **安全风险**:
* 授予 `WITH GRANT OPTION` 可能带来安全风险,因为它允许用户自行分配权限。因此,谨慎使用,确保只对可信任的用户启用该选项。
* **撤销权限时的影响**:
* 如果你撤销某用户的权限,并且该用户使用 `WITH GRANT OPTION` 授予了其他用户权限,系统将自动撤销该用户所转授的权限。
* 刷新:flush privileges;查看:show grants for '用户名'@'主机'(show grants查看当前用户权限);