mysql自动补全安装
yum install python3 python3-devel python3-pip -y
pip install mycli
然后使用mycli连接数据库
1、创建
创建用户以及密码。
CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
创建带过期时间用户:
CREATE USER `wangwei`@`127.0.0.1` IDENTIFIED BY 'wangwei' PASSWORD EXPIRE INTERVAL 90DAY;
GRANT ALL ON*.* TO `wangwei`@`127.0.0.1` WITH GRANT OPTION;
要求每90天更换密码:
CREATE USER 'wangwei'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
ALTER USER 'wangwei'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
禁用密码过期:
CREATE USER ' wangwei'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'wangwei'@'localhost' PASSWORD EXPIRE NEVER;
遵循全局到期政策:
CREATE USER 'wangwei'@'localhost' PASSWORD EXPIRE DEFAULT;
2、授权
授权所有库所有表给"mola"@“172.17.0.%”
grant replication slave on *.* to "rpe"@"172.17.0.%";
授权所有权限给wangwei@127.0.0.1
GRANT ALL ON *.* TO `wangwei`@`127.0.0.1` WITH GRANT OPTION;
更改用户host权限
UPDATE mysql.user SET user.Host='%' where user.User='kaifa';
删除权限
REVOKE all privileges ON databasename.tablename FROM 'username'@'host';
删除数据库
drop database database;
3、数据表的操作
创建(增)
create table ti(
id int auto_increment primary key,
name varchar(20),
age tinyint unsigned
)
插入数据
首先可先查询表 (数据不多的情况下)
select * from t1;
insert into t1 values(1,"xiaoming","18");
insert t1 values(2,"xiaowang","18");
insert t1 values(null,"xiaohua","18");
insert t1(name) values("xiaoqiang"),("xiaozhi");
insert t1 set
id=6,
name="xiaoli",
age=18;
或者
insert t1 set id=6, name="xiaoli", age="18";
删除(删)
删除表数据
delete from t1 where id=3;
逻辑删除
mysql> select * from t1;
+----+-----------+------+--------------------+
| id | name | age | isdelete |
+----+-----------+------+--------------------+
| 1 | xiaoming | 18 | 0x00 |
| 2 | xiaowang | 18 | 0x00 |
| 4 | xiaoqiang | NULL | 0x00 |
| 5 | xiaojun | 20 | 0x00 |
| 6 | xiaoli | 18 | 0x00 |
+----+-----------+------+--------------------+
mysql> alter table t1 add isdelete bit default 0;
mysql> select id,name from t1 where isdelete=0;
+----+-----------+
| id | name |
+----+-----------+
| 1 | xiaoming |
| 2 | xiaowang |
| 4 | xiaoqiang |
| 5 | xiaojun |
| 6 | xiaoli |
+----+-----------+
mysql> update t1 set isdelete=1 where id=4;
mysql> select id,name from t1 where isdelete=0;
+----+----------+
| id | name |
+----+----------+
| 1 | xiaoming |
| 2 | xiaowang |
| 5 | xiaojun |
| 6 | xiaoli |
+----+----------+
4 rows in set (0.00 sec)
修改(改)
after table t1 [add | drop | modify | change]
alter table t1 add addr varchar(20);
alter table t1 add job varchar(20) after name;
alter table t1 drop job;
alter table t1 modify addr varchar(20) after name;
alter table t1 change addr job varchar(20);
alter table t1 modify age tinyint unsigned default 20;
alter table t1 add isdelete bit default 0;
update ti set name="xiaoming" where id=1;
update ti set name="xiaoming" where name="xiaoming";
update ti set name="xiaoming",age="21" where id=1;
查询(查)
查看表结构
desc tb-name;
查看表内容
select * from t1;
select name,age from t1;
根据运算符查询
> 大于 | >= 大于等于 | < 小于 | <= 小于等于 | = 等于 | != 不等于
select id,name,age from t1 where id > 4;
mysql> select id,name,age from t1 where id <= 2 or name="xiaoli";
+----+----------+------+
| id | name | age |
+----+----------+------+
| 1 | xiaoming | 18 |
| 2 | xiaowang | 18 |
| 6 | xiaoli | 18 |
+----+----------+------+
3 rows in set (0.00 sec)
模糊查找
like 模糊查找
% 匹配任意多个字符
_ 匹配单个字符
mysql> select id,name,age from t1 where name like "xiao%";
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | xiaoming | 18 |
| 2 | xiaowang | 18 |
| 4 | xiaoqiang | NULL |
| 5 | xiaojun | 20 |
| 6 | xiaoli | 18 |
+----+-----------+------+
insert t1(name) values("xiaom");
select id,name,age from t1 where name like "xiao_";
mysql> show variables like "%log_bin";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
| sql_log_bin | ON |
+---------------+-------+
2 rows in set (0.01 sec)
范围查找
in 表示非连续的范围
between A and B 表示一个连续的范围内
not in 不在某个条件内
is null 空值
mysql> select * from t1 where id in (2,4,6);
+----+-----------+------+--------------------+
| id | name | age | isdelete |
+----+-----------+------+--------------------+
| 2 | xiaowang | 18 | 0x00 |
| 4 | xiaoqiang | NULL | 0x01 |
| 6 | xiaoli | 18 | 0x00 |
+----+-----------+------+--------------------+
mysql> select * from t1 where id between 2 and 6;
+----+-----------+------+--------------------+
| id | name | age | isdelete |
+----+-----------+------+--------------------+
| 2 | xiaowang | 18 | 0x00 |
| 4 | xiaoqiang | NULL | 0x01 |
| 5 | xiaojun | 20 | 0x00 |
| 6 | xiaoli | 18 | 0x00 |
+----+-----------+------+--------------------+
mysql> select * from t1 where not id in (2,4,6);
+----+----------+------+--------------------+
| id | name | age | isdelete |
+----+----------+------+--------------------+
| 1 | xiaoming | 18 | 0x00 |
| 5 | xiaojun | 20 | 0x00 |
+----+----------+------+--------------------+
聚合
mysql> select max(age) from t1;
+----------+
| max(age) |
+----------+
| 20 |
+----------+
mysql> select * from t1 where age in (select max(age) from t1);
+----+----------+------+--------------------+
| id | name | age | isdelete |
+----+----------+------+--------------------+
| 5 | xiaojun | 20 | 0x00 |
| 7 | xiaohua1 | 20 | 0x00 |
| 8 | xiaodong | 20 | 0x00 |
+----+----------+------+--------------------+
mysql> select count(*) from t1 where isdelete=1;
+----------+
| count(*) |
+----------+
| 2 |
+----------+
查找空值
mysql> select * from t1 where age is null;
+----+-----------+------+--------------------+
| id | name | age | isdelete |
+----+-----------+------+--------------------+
| 4 | xiaoqiang | NULL | 0x01 |
+----+-----------+------+--------------------+
排序
mysql> select * from t1 order by id;
+----+-----------+------+--------------------+
| id | name | age | isdelete |
+----+-----------+------+--------------------+
| 1 | xiaoming | 18 | 0x00 |
| 2 | xiaowang | 18 | 0x00 |
| 4 | xiaoqiang | NULL | 0x01 |
| 5 | xiaojun | 20 | 0x00 |
| 6 | xiaoli | 18 | 0x00 |
| 7 | xiaohua1 | 20 | 0x01 |
| 8 | xiaodong | 20 | 0x00 |
+----+-----------+------+--------------------+
mysql> select * from t1 order by id desc ;
+----+-----------+------+--------------------+
| id | name | age | isdelete |
+----+-----------+------+--------------------+
| 8 | xiaodong | 20 | 0x00 |
| 7 | xiaohua1 | 20 | 0x01 |
| 6 | xiaoli | 18 | 0x00 |
| 5 | xiaojun | 20 | 0x00 |
| 4 | xiaoqiang | NULL | 0x01 |
| 2 | xiaowang | 18 | 0x00 |
| 1 | xiaoming | 18 | 0x00 |
+----+-----------+------+--------------------+
group by 字段
mysql> select count(*),name from t1 group by name;
+----------+-----------+
| count(*) | name |
+----------+-----------+
| 1 | xiaoming |
| 1 | xiaowang |
| 1 | xiaoqiang |
| 1 | xiaojun |
| 1 | xiaoli |
| 1 | xiaohua1 |
| 1 | xiaodong |
+----------+-----------+
限制
mysql> select name,age from t1 limit 3;
+-----------+------+
| name | age |
+-----------+------+
| xiaoming | 18 |
| xiaowang | 18 |
| xiaoqiang | NULL |
+-----------+------+
mysql> select name,age from t1 limit 3,2;
+---------+------+
| name | age |
+---------+------+
| xiaojun | 20 |
| xiaoli | 18 |
+---------+------+
mysql> select * from t1 limit 4 offset 3;
+----+----------+------+--------------------+
| id | name | age | isdelete |
+----+----------+------+--------------------+
| 5 | xiaojun | 20 | 0x00 |
| 6 | xiaoli | 18 | 0x00 |
| 7 | xiaohua1 | 20 | 0x01 |
| 8 | xiaodong | 20 | 0x00 |
+----+----------+------+--------------------+
外键查询
create table t1(
tid int unsigned auto_increment primary key,
tname varchar(20),
class varchar(20)
);
create table s1(
sid int unsigned auto_increment primary key,
sname varchar(20),
tid int,
foreign key (tid) references t1(tid)
);
select s1.sname,t1.tname,t1.class from t1,s1 where t1.tid=s1.tid;
+----------+----------+-------+
| sname | tname | class |
+----------+----------+-------+
| xiaoming | wulaoshi | linux |
+----------+----------+-------+
视图(用于简化查询)
mysql> select s1.sname,t1.tname,t1.class from t1,s1 where t1.tid=s1.tid;
+----------+----------+-------+
| sname | tname | class |
+----------+----------+-------+
| xiaoming | wulaoshi | linux |
+----------+----------+-------+
mysql> create view v1 as select s1.sname,t1.tname,t1.class from t1,s1 where t1.tid=s1.tid;
mysql> select * from v1
+----------+----------+-------+
| sname | tname | class |
+----------+----------+-------+
| xiaoming | wulaoshi | linux |
+----------+----------+-------+
4、修改
修改密码8.0
alter user user() identified by 'mysql-master01';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
修改密码5.7
set password=password('mysql-master01');
update user set password=password("123") where user="root" and host="localhost";
查询
查询主库的状态
mysql> show master status ;
+---------------+----------+--------------+------------------+----------------+
| File | Position | Binlog_Do_DB |Binlog_Ignore_DB |Executed_Gtid_Set|
+---------------+----------+--------------+------------------+----------------+
| binlog.000001 | 659 | | | |
+---------------+----------+--------------+------------------+----------------+
1 row in set (0.00 sec)
查询主库的日志
mysql> show master logs;
+---------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000001 | 659 | No |
+---------------+-----------+-----------+
1 row in set (0.00 sec)
查询所有用户以及host
mysql> select user,host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)
查询binlog进度
mysql> show binlog events in "mysql-bin.000002";
+------------------+------+----------------+-----------+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+------+----------------+-----------+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| mysql-bin.000002 | 4 | Format_desc | 1 | 125 | Server ver: 8.0.25, Binlog ver: 4 |
| mysql-bin.000002 | 125 | Previous_gtids | 1 | 156 | |
| mysql-bin.000002 | 156 | Anonymous_Gtid | 1 | 235 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
| mysql-bin.000002 | 235 | Query | 1 | 491 | ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' AS '$A$005$A68 aQx&1(dD6a(2M8FCN8NXbLh9lRB90VLcWJDnSPDqguAsMS4b5UMMvINC' /* xid=3 */ |
| mysql-bin.000002 | 491 | Anonymous_Gtid | 1 | 568 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
| mysql-bin.000002 | 568 | Query | 1 | 658 | flush privileges |
| mysql-bin.000002 | 658 | Anonymous_Gtid | 1 | 737 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
| mysql-bin.000002 | 737 | Query | 1 | 956 | CREATE USER 'slave01'@'192.168.155.%' IDENTIFIED WITH 'mysql_native_password' AS '*4512F73DF9A45D6AFA3887D36BDF8C1E3F5BB439' /* xid=6 */ |
| mysql-bin.000002 | 956 | Anonymous_Gtid | 1 | 1033 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
| mysql-bin.000002 | 1033 | Query | 1 | 1191 | GRANT REPLICATION SLAVE ON *.* TO 'slave01'@'192.168.155.%' /* xid=7 */ |
| mysql-bin.000002 | 1191 | Anonymous_Gtid | 1 | 1268 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
| mysql-bin.000002 | 1268 | Query | 1 | 1358 | flush privileges |
+------------------+------+----------------+-----------+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
12 rows in set (0.00 sec)
查看所有用户(用户名、给谁授权)
SELECT user,host FROM mysql.user;
查看单个用户所有情况
SELECT * FROM mysql.user WHERE user='root'\G
查看数据库创建的sql命令
show create database test;
查看binlog文件
[root@web data]
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
刷新权限
flush privilege;