MySQL复制,约束条件,查询与安全控制
MySQL之复制
复制表
我有一个表
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| student |
+------------------+mysql> select * from student;
+------+-------+--------+------+----------+-------+
| id | name | sec | age | address | phone |
+------+-------+--------+------+----------+-------+
| 2 | jack | male | 20 | shanghai | 110 |
| 3 | alice | female | 20 | nanjing | 110 |
+------+-------+--------+------+----------+-------+复制这个表的id,name,phone。
mysql> create table ml(select id,name,phone from student);mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| ml |查看表的内容及结构:
mysql> select * from ml;
+------+-------+-------+
| id | name | phone |
+------+-------+-------+
| 2 | jack | 110 |
| 3 | alice | 110 |
+------+-------+-------+
2 rows in set (0.00 sec)mysql> desc ml;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| phone | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
语法: create table 新表名(select * from 要复制的表名)
*可以是要复制表里面的字段
复制表的结构
mysql> create table zx(select * from ml where 4=5);
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| ml |
|
| zx |
+------------------+mysql> select * from zx;
Empty set (0.00 sec) --------由于执行语句where 4=5,不成立,因此只复制表结构 不复制表数据mysql> desc zx;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| phone | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> create table bs(select * from ml where 2=2);
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| bs |
| ml |
| student |
| zx |
+------------------+mysql> select * from bs;
+------+-------+-------+
| id | name | phone |
+------+-------+-------+
| 2 | jack | 110 |
| 3 | alice | 110 |
+------+-------+-------+
2 rows in set (0.00 sec)mysql> desc bs;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| phone | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
语法:create table 新表名(select * from 复制的表名 where n=m)
如果n等于m成立,那么复制表的结构与数据
如果n等于m不成立,那么只复制表的结构
MySQL的约束条件
约束条件 | 说明 |
null | 标识是否允许为空,默认为NULL。 |
not null | 标识该字段不能为空,可以修改。 |
UNIQUE KEY (UK) | 标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY |
default | 为该字段设置默认值 |
UNSIGNED | 无符号,正数 |
primary key (PK) | 标识该字段为该表的主键,可以唯一的标识记录,不可以为空 |
auto_increment | 标识该字段的值自动增长(整数类型,而且为主键) |
FOREIGN KEY (FK) | 标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联 |
enum | 二选一 |
set | 多选 |
实验
mysql> use zyq; #进入zyq库mysql> create table idol(id int primary key auto_increment not null,name varchar(40) not null comment 'idol姓名',gender enum('男','女') not null default '男',hobby set('唱歌','跳舞','打麻将') not null);
Query OK, 0 rows affected (0.01 sec)mysql> desc idol;
+--------+------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(40) | NO | | NULL | |
| gender | enum('男','女') NO | | 男 | |
| hobby | set('唱歌','跳舞','打麻将') | NO | | NULL | |
+--------+------------------------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
primary key 是标识该字段为该表的主键,可以唯一的标识记录,不可以为空
auto_increment 标识该字段的值自动增长(整数类型,而且为主键),每张表只能一个字段为自增
not null 字段不可以为空,可以修改
comment 指定注释
default 默认
set为多选
enum为单选
对于set多选,最后添加数据时候, insert into 表名(字段) values(' , ')在一个引号里写即可,中间用逗号隔开。
为表idol添加数据
mysql> insert into idol(id,name,gender,hobby) values(1,'tom','男','唱歌');
Query OK, 1 row affected (0.00 sec)mysql> select * from idol;
+----+------+--------+--------+
| id | name | gender | hobby |
+----+------+--------+--------+
| 1 | tom | 男 | 唱歌 |
+----+------+--------+--------+mysql> insert into idol(id,name,gender,hobby) values(2,'jack','女','唱歌,跳舞');
Query OK, 1 row affected (0.00 sec)mysql> select * from idol;
+----+------+--------+---------------+
| id | name | gender | hobby |
+----+------+--------+---------------+
| 1 | tom | 男 | 唱歌 |
| 2 | jack | 女 | 唱歌,跳舞 |
+----+------+--------+---------------+
2 rows in set (0.00 sec)
我们之前创建表的时候 设置约束条件 id可以为自增,性别gender默认为男,那么代表我们添加数据的时候 不定义字段id,gender 那么出来的表数据也会有id,gender
mysql> insert into idol(name,hobby) values('cxk','唱歌');
Query OK, 1 row affected (0.00 sec)mysql> select * from idol;
+----+------+--------+---------------+
| id | name | gender | hobby |
+----+------+--------+---------------+
| 1 | tom | 男 | 唱歌 |
| 2 | jack | 女 | 唱歌,跳舞 |
| 3 | cxk | 男 | 唱歌 |
+----+------+--------+---------------+
3 rows in set (0.00 sec)
MySQL之单表查询
准备测试company 测试表employee5
mysql> CREATE TABLE company.employee5(id int primary key AUTO_INCREMENT not null,name varchar(30) not null,sex enum('male','female') default 'male' not null,hire_date date not null,post varchar(50) not null,job_description varchar(100),salary double(15,2) not null,office int,dep_id int);mysql> insert into company.employee5(name,sex,hire_date,post,job_description,salary,office,dep_id) values ('jack','male','20180202','instructor','teach',5000,501,100),('tom','male','20180203','instructor','teach',5500,501,100),('robin','male','20180202','instructor','teach',8000,501,100),('alice','female','20180202','instructor','teach',7200,501,100),('tianyun','male','20180202','hr','hrcc',600,502,101),('harry','male','20180202','hr',NULL,6000,502,101),('emma','female','20180206','sale','salecc',20000,503,102),('christine','female','20180205','sale','salecc',2200,503,102),('zhuzhu','male','20180205','sale',NULL,2200,503,102),('gougou','male','20180205','sale','',2200,503,102);
结果
mysql> select * from employee5;
+----+-----------+--------+------------+------------+-----------------+----------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+-----------+--------+------------+------------+-----------------+----------+--------+--------+
| 1 | jack | male | 2018-02-02 | instructor | teach | 5000.00 | 501 | 100 |
| 2 | tom | male | 2018-02-03 | instructor | teach | 5500.00 | 501 | 100 |
| 3 | robin | male | 2018-02-02 | instructor | teach | 8000.00 | 501 | 100 |
| 4 | alice | female | 2019-03-05 | instructor | teach | 7200.00 | 501 | 100 |
| 5 | tianyun | male | 2018-02-02 | hr | hrcc | 600.00 | 502 | 101 |
| 6 | harry | male | 2018-02-02 | hr | NULL | 6000.00 | 502 | 101 |
| 7 | emma | female | 2018-02-06 | sale | salecc | 20000.00 | 503 | 102 |
| 8 | christine | female | 2018-02-05 | sale | salecc | 2200.00 | 503 | 102 |
| 9 | zhuzhu | male | 2018-02-05 | sale | NULL | 2200.00 | 503 | 102 |
| 10 | gougou | male | 2017-02-02 | sale | | 2200.00 | 503 | 102 |
+----+-----------+--------+------------+------------+-----------------+----------+--------+--------+
10 rows in set (0.00 sec)
查询:
简单查询
查询表中一共有多少条数据
mysql> select count(*) from employee5;
+----------+
| count(*) |
+----------+
| 10 |
+----------+
1 row in set (0.00 sec)
条件查询
mysql> select * from employee5;
mysql> select id ,name,sex from employee5;
避免重复,去重查询: distinct
语法: select distinct 字段 from 表名
查询去重之后的性别
mysql> select distinct sex from employee5;
+--------+
| sex |
+--------+
| male |
| female |
+--------+
2 rows in set (0.00 sec)这是不去重的查询性别mysql> select sex from employee5;
+--------+
| sex |
+--------+
| male |
| male |
| male |
| female |
| male |
| male |
| female |
| female |
| male |
| male |
+--------+
10 rows in set (0.00 sec)
通过计算查询
查询该表中每个人的工资
mysql> select name,salary from employee5;
+-----------+----------+
| name | salary |
+-----------+----------+
| jack | 5000.00 |
| tom | 5500.00 |
| robin | 8000.00 |
| alice | 7200.00 |
| tianyun | 600.00 |
| harry | 6000.00 |
| emma | 20000.00 |
| christine | 2200.00 |
| zhuzhu | 2200.00 |
| gougou | 2200.00 |
+-----------+----------+
10 rows in set (0.00 sec)假设表中工资是月薪,一年假设14薪。查询该表中每个人一年的工资
mysql> select name,salary,salary*14 from employee5;
+-----------+----------+-----------+
| name | salary | salary*14 |
+-----------+----------+-----------+
| jack | 5000.00 | 70000.00 |
| tom | 5500.00 | 77000.00 |
| robin | 8000.00 | 112000.00 |
| alice | 7200.00 | 100800.00 |
| tianyun | 600.00 | 8400.00 |
| harry | 6000.00 | 84000.00 |
| emma | 20000.00 | 280000.00 |
| christine | 2200.00 | 30800.00 |
| zhuzhu | 2200.00 | 30800.00 |
| gougou | 2200.00 | 30800.00 |
+-----------+----------+-----------+
10 rows in set (0.00 sec)
支持四则运算查询
支持起别名 语法: select 字段名,字段名 as 新字段名 from 表名
也可以起别名,比如查询一年的工资,起名为yearsalary 呈现出来
mysql> select name,salary*14 as yearsalary from employee5;
+-----------+------------+
| name | yearsalary |
+-----------+------------+
| jack | 70000.00 |
| tom | 77000.00 |
| robin | 112000.00 |
| alice | 100800.00 |
| tianyun | 8400.00 |
| harry | 84000.00 |
| emma | 280000.00 |
| christine | 30800.00 |
| zhuzhu | 30800.00 |
| gougou | 30800.00 |
+-----------+------------+
10 rows in set (0.00 sec)
显示格式自定义
CONCAT() 函数用于连接字符串
将几个数据拼接在一起,显示格式,可以自定义,
想查询每个人及对应的工资 拼接起来
mysql> select concat(name,'@',salary) from employee5;
+-------------------------+
| concat(name,'@',salary) |
+-------------------------+
| jack@5000.00 |
| tom@5500.00 |
| robin@8000.00 |
| alice@7200.00 |
| tianyun@600.00 |
| harry@6000.00 |
| emma@20000.00 |
| christine@2200.00 |
| zhuzhu@2200.00 |
| gougou@2200.00 |
+-------------------------+
10 rows in set (0.01 sec)mysql> select concat(name,'#',salary) from employee5;
+-------------------------+
| concat(name,'#',salary) |
+-------------------------+
| jack#5000.00 |
| tom#5500.00 |
| robin#8000.00 |
| alice#7200.00 |
| tianyun#600.00 |
| harry#6000.00 |
| emma#20000.00 |
| christine#2200.00 |
| zhuzhu#2200.00 |
| gougou#2200.00 |
+-------------------------+
10 rows in set (0.00 sec)
单条件查询
查询工资为5000的人
mysql> select name from employee5 where salary=5000;
+------+
| name |
+------+
| jack |
+------+
1 row in set (0.00 sec)查询性别为女的人
mysql> select name from employee5 where sex='male';
+---------+
| name |
+---------+
| jack |
| tom |
| robin |
| tianyun |
| harry |
| zhuzhu |
| gougou |
+---------+
7 rows in set (0.00 sec)
多条件查询
查询工资在3000到5000之间的员工
mysql> select name,salary from employee5 where salary >=3000 and salary <= 5000;
+------+---------+
| name | salary |
+------+---------+
| jack | 5000.00 |
+------+---------+
1 row in set (0.00 sec)
也可以使用关键词 between and
查询工资在2000到6000之间的员工
mysql> select name,salary from employee5 where salary between 2000 and 3000;
+-----------+---------+
| name | salary |
+-----------+---------+
| christine | 2200.00 |
| zhuzhu | 2200.00 |
| gougou | 2200.00 |
+-----------+---------+
3 rows in set (0.00 sec)
关键字IS NULL
查询职位描述为null的员工
mysql> select name , job_description from employee5 where job_description is null;
+--------+-----------------+
| name | job_description |
+--------+-----------------+
| harry | NULL |
| zhuzhu | NULL |
+--------+-----------------+
2 rows in set (0.01 sec)
查询职位描述为 not null的员工
mysql> select name , job_description from employee5 where job_description is not null;
+-----------+-----------------+
| name | job_description |
+-----------+-----------------+
| jack | teach |
| tom | teach |
| robin | teach |
| alice | teach |
| tianyun | hrcc |
| emma | salecc |
| christine | salecc |
| gougou | |
+-----------+-----------------+
8 rows in set (0.00 sec)
查询职位描述为'' 的员工
mysql> select name , job_description from employee5 where job_description = '';
+--------+-----------------+
| name | job_description |
+--------+-----------------+
| gougou | |
+--------+-----------------+
1 row in set (0.00 sec)
NULL说明:
1、等价于没有任何值、是未知数。
2、NULL与0、空字符串、空格都不同,NULL没有分配存储空间。
3、对空值做加、减、乘、除等运算操作,结果仍为空。
4、比较时使用关键字用“is null”和“is not null”。
5、排序时比其他数据都小,所以NULL值总是排在最前。
关键词in集合查询
查询工资是2000或者3000或者5000或者5500的员工
mysql> select name , salary from employee5 where salary =2000 or salary =3000 or salary =5000 or salary =5500;
+------+---------+
| name | salary |
+------+---------+
| jack | 5000.00 |
| tom | 5500.00 |
+------+---------+
2 rows in set (0.00 sec)也可以将他们放在一个集合里面查询
mysql> select name , salary from employee5 where salary in(2000,5000,5500);
+------+---------+
| name | salary |
+------+---------+
| jack | 5000.00 |
| tom | 5500.00 |
+------+---------+
2 rows in set (0.00 sec)
查询工资不是5500,5000的员工
mysql> select name , salary from employee5 where salary not in (5000,5500);
+-----------+----------+
| name | salary |
+-----------+----------+
| robin | 8000.00 |
| alice | 7200.00 |
| tianyun | 600.00 |
| harry | 6000.00 |
| emma | 20000.00 |
| christine | 2200.00 |
| zhuzhu | 2200.00 |
| gougou | 2200.00 |
+-----------+----------+
8 rows in set (0.00 sec)
排序查询
升序查询
升序查询名字首字母排列
mysql> select name from employee5 order by name;
+-----------+
| name |
+-----------+
| alice |
| christine |
| emma |
| gougou |
| harry |
| jack |
| robin |
| tianyun |
| tom |
| zhuzhu |
+-----------+
10 rows in set (0.00 sec)
降序查询
mysql> select name from employee5 order by name desc;
+-----------+
| name |
+-----------+
| zhuzhu |
| tom |
| tianyun |
| robin |
| jack |
| harry |
| gougou |
| emma |
| christine |
| alice |
+-----------+
10 rows in set (0.00 sec)
语法: select 字段 from 表名 order by 字段 默认升序查询
select 字段 from 表名 order by 字段 desc 倒叙查询
模糊查询:
查询工资中有数字20的员工
mysql> select * from employee5 where salary like '%20%';
+----+-----------+--------+------------+------------+-----------------+----------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+-----------+--------+------------+------------+-----------------+----------+--------+--------+
| 4 | alice | female | 2019-03-05 | instructor | teach | 7200.00 | 501 | 100 |
| 7 | emma | female | 2018-02-06 | sale | salecc | 20000.00 | 503 | 102 |
| 8 | christine | female | 2018-02-05 | sale | salecc | 2200.00 | 503 | 102 |
| 9 | zhuzhu | male | 2018-02-05 | sale | NULL | 2200.00 | 503 | 102 |
| 10 | gougou | male | 2017-02-02 | sale | | 2200.00 | 503 | 102 |
+----+-----------+--------+------------+------------+-----------------+----------+--------+--------+
5 rows in set (0.00 sec)
正则查询
1.查询有特定字符串或者字符的记录
查询 name 字段含有“a”的记录,SQL 语句和执行过程如下。
mysql> select * from employee5 where name regexp 'a';
+----+---------+--------+------------+------------+-----------------+----------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+---------+--------+------------+------------+-----------------+----------+--------+--------+
| 1 | jack | male | 2018-02-02 | instructor | teach | 5000.00 | 501 | 100 |
| 4 | alice | female | 2019-03-05 | instructor | teach | 7200.00 | 501 | 100 |
| 5 | tianyun | male | 2018-02-02 | hr | hrcc | 600.00 | 502 | 101 |
| 6 | harry | male | 2018-02-02 | hr | NULL | 6000.00 | 502 | 101 |
| 7 | emma | female | 2018-02-06 | sale | salecc | 20000.00 | 503 | 102 |
+----+---------+--------+------------+------------+-----------------+----------+--------+--------+
5 rows in set (0.00 sec)
2.查询以特定字符或字符串开头的记录
mysql> select * from employee5 where name regexp '^a';
+----+-------+--------+------------+------------+-----------------+---------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+-------+--------+------------+------------+-----------------+---------+--------+--------+
| 4 | alice | female | 2019-03-05 | instructor | teach | 7200.00 | 501 | 100 |
+----+-------+--------+------------+------------+-----------------+---------+--------+--------+
1 row in set (0.00 sec)
3.查询以特定字符或字符串结尾的记录
mysql> select * from employee5 where name regexp 'y$';
+----+-------+------+------------+------+-----------------+---------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+-------+------+------------+------+-----------------+---------+--------+--------+
| 6 | harry | male | 2018-02-02 | hr | NULL | 6000.00 | 502 | 101 |
+----+-------+------+------------+------+-----------------+---------+--------+--------+
1 row in set (0.00 sec)
4.使用{n,}或者{n,m}来指定字符串连续出现的次数
字符串{n,}表示字符串连续出现 n 次;字符串{n,m}表示字符串连续出现至少 n 次,最多 m 次。
例如,a{2,} 表示字母 a 连续出现至少 2 次,也可以大于 2 次;a{2,4} 表示字母 a 连续出现最少 2 次,最多不能超过 4 次。
mysql> select * from employee5 where name regexp 'r{1}';
+----+-----------+--------+------------+------------+-----------------+---------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+-----------+--------+------------+------------+-----------------+---------+--------+--------+
| 3 | robin | male | 2018-02-02 | instructor | teach | 8000.00 | 501 | 100 |
| 6 | harry | male | 2018-02-02 | hr | NULL | 6000.00 | 502 | 101 |
| 8 | christine | female | 2018-02-05 | sale | salecc | 2200.00 | 503 | 102 |
+----+-----------+--------+------------+------------+-----------------+---------+--------+--------+
3 rows in set (0.00 sec)
5.‘ba+’ 匹配以 b 开头,后面至少紧跟一个 a
mysql> select * from employee5 where salary regexp '72+';
+----+-------+--------+------------+------------+-----------------+---------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+-------+--------+------------+------------+-----------------+---------+--------+--------+
| 4 | alice | female | 2019-03-05 | instructor | teach | 7200.00 | 501 | 100 |
+----+-------+--------+------------+------------+-----------------+---------+--------+--------+
1 row in set (0.00 sec)
函数
函数
count() 统计数量
max()
min()
avg()
database()
user()
now()
sum()
password()
SELECT COUNT(*) FROM employee5; SELECT COUNT(*) FROM employee5 WHERE dep_id=101; SELECT MAX(salary) FROM employee5; SELECT MIN(salary) FROM employee5; SELECT AVG(salary) FROM employee5; SELECT SUM(salary) FROM employee5; SELECT SUM(salary) FROM employee5 WHERE dep_id=101;
MySQL之安全控制
数据库不要暴露在公网;授权普通用户,注意远程连接地址。ip肯定不能弄成%。权限修改数据库端口。3306进程,使用mysql普通用户启动。启动binlog日志删除空口令账号,没有密码就可以登录test(5.6)数据库删除禁止root用户远程访问记录慢日志调优: 配置最大连接数 max_connections=300
1.确保MySQL运行用户为一般用户
# groupadd mysql
# useradd -M -s /sbin/nologin -g mysql mysql# vim /etc/my.cnf
user = mysql#注意点:改变拥有者和所属组对于mysql的安装目录
2.建议修改默认端口3306,改为其他的一些端口
# vim /etc/my.cnf
port = 3306 false
port = 10086 true
3.开启mysql二进制日志,在误删除数据的情况下,可以通过二进制日志恢复到某个时间点 ;;; 为了数据安全 ,为了好恢复
# vim /etc/my.cnf
log_bin = othername
4..删除空口令账号
#禁用匿名账号
# vim /etc/my.cnfskip-grant-tables = 1. --改成 "#skip-grant-tables = 1"#删除空口令用户
mysql> SELECT User,Host,authentication_string from mysql.user;
+---------------+-----------+-------------------------------------------+
| User | Host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | localhost | *AFE7E33F3C21EAE1BF8231C3B09F9B0184A670F6 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+---------------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)mysql> create user 'newrain'@'localhost'; #(这是在做实验)创建空口令账户
Query OK, 0 rows affected (0.00 sec)mysql> SELECT User,Host,authentication_string from mysql.user;
+---------------+-----------+-------------------------------------------+
| User | Host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | localhost | *AFE7E33F3C21EAE1BF8231C3B09F9B0184A670F6 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| newrain | localhost | |
+---------------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)mysql> drop user 'newrain'@'localhost'; #这是删除空口令账户
Query OK, 0 rows affected (0.01 sec)mysql> SELECT User,Host,authentication_string from mysql.user;
+---------------+-----------+-------------------------------------------+
| User | Host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | localhost | *AFE7E33F3C21EAE1BF8231C3B09F9B0184A670F6 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+---------------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)
a.禁止root账户远程访问(允许普通用户远程访问,某个网段即可)
mysql> SELECT User,Host,authentication_string from mysql.user;
+---------------+-----------+-------------------------------------------+
| User | Host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | localhost | *AFE7E33F3C21EAE1BF8231C3B09F9B0184A670F6 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+---------------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)mysql> create user 'root'@'10.0.11.%' identified by "123";
Query OK, 0 rows affected (0.00 sec)mysql> SELECT User,Host,authentication_string from mysql.user;
+---------------+-----------+-------------------------------------------+
| User | Host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | localhost | *AFE7E33F3C21EAE1BF8231C3B09F9B0184A670F6 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| root | 10.0.11.% | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+---------------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)mysql> drop user 'root'@'10.0.11.%';
Query OK, 0 rows affected (0.00 sec)
b.使用mysql的时候,经常会遇到MySQL: ERROR 1040: Too many connections
这样的问题,一种是访问量确实很高, MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是MySQL配置文件中max_connections值过小, 这时就需要调整当前最大连接数
##设置最大连接数02
修改mysql配置文件my.cnf,在[mysqld]段中添加或修改max_connections值:
max_connections=256
相关文章:
MySQL复制,约束条件,查询与安全控制
MySQL之复制 复制表 我有一个表 mysql> show tables; ------------------ | Tables_in_school | ------------------ | student | ------------------mysql> select * from student; -------------------------------------------- | id | name | sec |…...
Java ES 滚动查询
滚动查询(Scroll Query)是 Elasticsearch 提供的一种机制,用于处理大量数据的查询。它允许你在多个请求之间保持“游标”,以便在后续请求中获取更多的结果。 以下是滚动查询的基本工作原理: 1 初始查询: 客户端发送一…...
机器学习算法基础--KNN算法分类
文章目录 1.KNN算法原理介绍2.KNN分类决策原则3.KNN度量距离介绍3.1.闵可夫斯基距离3.2.曼哈顿距离3.3.欧式距离 4.KNN分类算法实现5.KNN分类算法效果6.参考文章与致谢 1.KNN算法原理介绍 KNN(K-Nearest Neighbor)工作原理: 在一个存在标签的…...
深入探究 C++ 编程中的资源泄漏问题
目录 1、GDI对象泄漏 1.1、何为GDI资源泄漏? 1.2、使用GDIView工具排查GDI对象泄漏 1.3、有时可能需要结合其他方法去排查 1.4、如何保证没有GDI对象泄漏? 2、进程句柄泄漏 2.1、何为进程句柄泄漏? 2.2、创建线程时的线程句柄泄漏 …...
BLE协议栈1-物理层PHY
从应届生开始做ble开发也差不读四个月的时间了,一直在在做上层的应用,对蓝牙协议栈没有过多的时间去了解,对整体的大方向概念一直是模糊的状态,在开发时也因此遇到了许多问题,趁有空去收集了一下资料来完成了本次专栏&…...
光伏储能直流系统MATLAB仿真(PV光伏阵列+Boost DCDC变换器+负载+双向DCDC变换器+锂离子电池系统)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
C++三大特性——继承(上篇)
文章目录 目录 一、继承的概念及定义 1.1继承的概念 1.2 继承定义 1.2.1定义格式 1.2.2继承关系和访问限定符 1.2.3继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 一、继承的概念及定义 1.1继承的概念 继承(inherita…...
docker系列(9) - docker-compose
文章目录 9. compose编排9.1 介绍9.2 安装9.3 compose常用命令9.4 实战Springboot部署9.4.1 准备组件配置文件9.4.1.1 redis的配置文件9.4.1.2 MySQL的配置文件9.4.1.3 SpringBoot打包文件 9.4.2 准备docker-compose.yml9.4.3 启动服务9.4.4 测试验证 9.5 实战ElasticsearchKib…...
Vue中如何进行日历展示与操作
在Vue中创建交互式日历应用 在Web开发中,创建一个交互式的日历应用是一项常见的任务。Vue.js作为一个流行的JavaScript框架,提供了许多便捷的工具和组件来简化日历的开发。本文将介绍如何使用Vue来创建一个简单但功能强大的日历应用,包括展示…...
SpringBoot 返回图片、Excel、音视频等流数据几种处理方式
方式一:直接针对响应对象(response)实现 @RestController @Slf4j @Api(tags = SwaggerConfig.TAG_IMAGE) @RequestMapping(SwaggerConfig.TAG_IMAGE) public class ImageController {@GetMapping(value = "/getImage")@ApiOperation("获取图片-以ImageIO流形…...
【Vue面试题一】、说说你对 Vue 的理解
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:有使用过vue吗ÿ…...
vue3 axios
npm install axios import axios from axios // 创建axios实例 const request axios.create({baseURL: ,// 所有的请求地址前缀部分(没有后端请求不用写)timeout: 80000, // 请求超时时间(毫秒)withCredentials: true,// 异步请求携带cookie// headers: {// 设置后端需要的传…...
划片机:半导体生产的必备设备
划片机是半导体加工行业中的重要设备,主要用于将晶圆切割成晶片颗粒,为后道工序粘片做好准备。随着国内半导体生产能力的提高,划片机市场的需求也在逐渐增加。 在市场定位上,划片机可以应用于半导体芯片和其他微电子器件的制造过程…...
电路维修——双端队列BFS
达达是来自异世界的魔女,她在漫无目的地四处漂流的时候,遇到了善良的少女翰翰,从而被收留在地球上。 翰翰的家里有一辆飞行车。有一天飞行车的电路板突然出现了故障,导致无法启动。电路板的整体结构是一个 R 行 C 列的网格&#…...
乌班图22.04 kubeadm简单搭建k8s集群
1. 我遇到的问题 任何部署类问题实际上对于萌新来说都不算简单,因为没有经验,这里我简单将部署的步骤和想法给大家讲述一下 2. 简单安装步骤 准备 3台标准安装的乌班图server22.04(采用vm虚拟机安装,ip为192.168.50.3࿰…...
vue3富文本编辑器的二次封装开发-Tinymce
欢迎点击领取 -《前端面试题进阶指南》:前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的🪜 简介 1、安装:pnpm add tinymce / pnpm add tinymce/tinymce-vue > Vue3 tinymce tinymce/tinymce-vue 2、功能实现图片上传…...
typescript 类型声明文件
typescript 类型声明文件概述 在今天几乎所有的JavaScript应用都会引入许多第三方库来完成任务需求。这些第三方库不管是否是用TS编写的,最终都要编译成JS代码,才能发布给开发者使用。6我们知道是TS提供了类型,才有了代码提示和类型保护等机…...
Hadoop伪分布式环境搭建
什么是Hadoop伪分布式集群? Hadoop 伪分布式集群是一种在单个节点上模拟分布式环境的配置,用于学习、开发和测试 Hadoop 的功能和特性。它提供了一个简化的方式来体验和熟悉 Hadoop 的各个组件,而无需配置和管理一个真正的多节点集群。 在 Ha…...
javaee ssm框架项目添加分页控件
搭建ssm框架项目 参考上一篇博文 添加分页控件 引入依赖 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schema…...
2023年中国非晶纳米晶竞争格局、产业链及行业产量分析[图]
非晶合金又称“液态金属、金属玻璃”,是一种新型软磁合金材料,主要包含铁、硅、硼等元素。其主要制品非晶合金薄带的制造工艺是采用急速冷却技术将合金熔液以每秒106℃的速度急速冷却,形成厚度约0.03mm的非晶合金薄带,物理状态表现…...
在业务开发中遇到的树形结构(部门、区域、职位),递归处理。
文章目录 概要对象结构示例完整示例小结 概要 本文主要记录在树形结构中会遇到的问题, 使用部门结构讲解,main方法进行演示。 1、获取部门树结构 2、根据部门id获取所有下级 3、根据部门id获取上级部门 4、根据部门id获取类似面包屑(总公司…...
张量-算术操作函数
tf.add(x,y,name None)求和函数 示例代码如下: import tensorflow.compat.v1 as tf tf.disable_v2_behavior()x 1 y 2a tf.add(x,y)with tf.Session() as sess:print(sess.run(a)) tf.subtract(x,y,name None)减法函数 示例代码如下: import tensorflow.compat.v1 as …...
虚拟展厅有什么重要意义,了解虚拟展厅在宣传中的应用
引言: 随着科技的不断进步,虚拟展厅已经逐渐成为展览行业的重要一环。虚拟展厅是一种数字化平台,为观众提供了与传统展览完全不同的体验。 一.虚拟展厅的定义 虚拟展厅是一个通过互联网和虚拟现实技术创建的数字展示空间&#x…...
华为OD机试真题-补种未成活胡杨(Java/C++/Go/Python)
华为OD机试真题-补种未成活胡杨(Java/C++/Go/Python) 题目描述 近些年来,我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨(编号1-N),排成一排。 一个月后,有M棵胡杨未能成活。现可补种胡杨K棵,请问如何补种(只能补种,不能新种),可以得到最多的连续胡杨树? 输入…...
Java卷上天,可以转行干什么?
小刚是某名企里的一位有5年经验的高级Java开发工程师,每天沉重的的工作让他疲惫不堪,让他萌生出想换工作的心理,但是转行其他工作他又不清楚该找什么样的工作 因为JAVA 这几年的更新实在是太太太……快了,JAVA 8 都还没用多久&am…...
Pyside6 安装和简单界面开发
Pyside6 安装和简单界面开发 Pyside6介绍Pysied6开发环境搭建Python安装Pysied6安装 Pyside6界面开发简单界面设计界面设计界面编译 编写界面初始化代码软件打包 Pyside6介绍 对于Python的GUI开发来说,Python自带的可视化编程模块的功能较弱,PySide是跨…...
python读取vivo手机截图,将满屏图片文件移动别的路径
问题之初 python读取vivo手机截图, 将满屏图片文件移动别的路径好多这样的图片,占用手机大量的内存,食之无味弃之可惜!那么会复制粘贴👀代码的我们我们今天就把这些图片筛选清理掉。 这段代码 原有逻辑的基础上&…...
【一周安全资讯1007】多项信息安全国家标准10月1日起实施;GitLab发布紧急安全补丁修复高危漏洞
要闻速览 1.以下信息安全国家标准10月1日起实施 2.GitLab发布紧急安全补丁修复高危漏洞 3.主流显卡全中招!GPU.zip侧信道攻击可泄漏敏感数据 4.MOVEit漏洞导致美国900所院校学生信息发生大规模泄露 5.法国太空和国防供应商Exail遭黑客攻击,泄露大量敏感…...
2023年09月个人工作生活总结
本文为 2023 年 9 月工作生活总结。 研发编码 Alpine 容器 某工程部署于alpine镜像,当初看上是因为其体积小,其它微服务,在250MB左右,但那个工程只用50MB。最近发现时间戳转换不正确。对于同一时间字符串转时间戳函数࿰…...
现货白银图表分析的依据
现货白银的行情图表分析其实与股票的差不多,投资者可以结合均线、k线的变化,来分析实时的行情走势。当走势图的均线呈多头排列,即短期、中期、长期均线依次从上到下排列并向右上方运行,且白银价格沿各均线向右上方拉升,…...
东莞网站开发定制/百度识图在线识别
您所描述的内容称为多态关联。 也就是说,“外键”列包含必须存在于一组目标表之一中的id值。 通常,目标表以某种方式相关,例如是一些常见的超类数据的实例。 您还需要外键列旁边的另一列,以便在每一行上,您可以指定引用…...
网站推广营销怎么做/搜索网站的浏览器
在jqery中有这样一个方法,$.post()下面就这个方法做一个简单的实例:jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求参数:url (String) : 发送请求的URL地址.data (Map) : (可选) 要发送给服务器的数…...
显示官网字样的网站怎么做/新闻发布平台有哪些
一. Hive操作HQL语句的两个参数 假设有两个hql语句A和B,hql语句A要求在凌晨5点执行,B语句要求在A执行完之后执行,那么我们怎么做呢? 1.通过人工在hive客户端执行(不可行) 2.写一个Java程序,使用JDBC定时执行这样的操作…...
创建网页链接/aso优化技巧大aso技巧
nt4.0下,如果将文件拷贝到别处,则文件的acl欣喜就丢失了,必须借助resource kit里面的scopy.exe程序,而WIN2000下面的xcopy程序比nt4.0多了几个参数,可以将文件的安全设置进行复制了,Xcopy 复制文件和目录&a…...
web网站建设/宁波网络推广公司有哪些
关于字符集和Unicode的相关知识 src url:http://www.blueidea.com/tech/program/2010/7432.asp 作者:Joel Spolsky 时间: 2010-03-12 文档类型:翻译 第 1 页 关于字符集和Unicode的相关知识 [1] 第 2 页 关于字符集和Unicode的相关知识 […...
网站建设费用归类/百度海南分公司
若缺少 useUnicodetrue&characterEncodingUTF8 则当查询条件是中文时,会出现查询空(原因:idea使用UTF-8编码,需指定连接Mysql过程中也使用UTF8,才不会编解码错误) 另外注意:ResultSet内容获…...