页面“Mysql 基础 Mysql study之常用操作”与“Jumpserver基础”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
 
 
第1行: 第1行:
==mysql study之常用操作==
 
  
=== 关闭 启动===
+
=jumpserver install=
 
<pre>
 
<pre>
本质关闭和启动的最直接就是他们了,启动脚本也是启用他们的
 
  
 +
加个开机启动
  
关闭mysql 数据库
+
#在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:
mysqladmin --defaults-file=/etc/my.cnf -uroot -p'xx'  shutdown  2>&1
+
$docker run --restart=always
killall -15 mysqld
+
#如果已经启动了则可以使用如下命令:
 +
$docker update --restart=always <CONTAINER ID>
  
 
+
重启试一下
启动
 
mysqld_safe my.cnf
 
 
</pre>
 
</pre>
 +
==* init ==
  
=== 日常基本操作===
+
==* ins mariadb redis ==
[[Sql 基础]]
+
<pre>
 
+
apt  install mariadb-client  mariadb-server redis -y
CREATE DATABASE youdbname CHARACTER SET utf8mb4  COLLATE utf8mb4_general_ci; #创建库
 
#create database dbname default charset=utf8;
 
 
 
====SQL  select  DELETE etc 语句====
 
 
 
DELETE FROM 表名称 WHERE 列名称 = 值
 
 
 
参考
 
http://www.w3school.com.cn/sql/sql_delete.asp
 
 
 
 
 
 
 
<pre>首次记录时间:2016年8月14日
 
有个哥说介绍一些mysql常用操作,于是有了此文
 
 
 
补充
 
RDBS, Relation data base system(关系型数据库系统),数据以二维表形式存储,每行(row)代表同一行数据,为记录
 
每列表示记录中的某个属性,为字段也
 
 
 
不能用 kill -9 因为会 自动重启 mysql service
 
root@debian:/# mysqladmin -pevan shutdown
 
root@debian:/h# ps -ef | grep mysqld
 
root 9950 5490 0 19:11 pts/0 00:00:00 grep mysqld
 
 
 
root@debian:# mysqladmin -pevan status
 
mysqladmin: connect to server at ‘localhost’ failed
 
error: ‘Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)’
 
Check that mysqld is running and that the socket: ‘/var/run/mysqld/mysqld.sock’ exists!
 
 
 
rm -f /var/run/mysqld/mysqld.sock
 
 
 
root@debian:# mysqladmin -pevan status
 
Uptime: 19 Threads: 1 Questions: 2 Slow
 
 
 
p628 /etc/init.d/mysqld
 
 
 
mysql> show variables like ‘%buffer%’;
 
+——————————+———–+
 
| Variable_name | Value |
 
+——————————+———–+
 
| bulk_insert_buffer_size | 8388608 |
 
| innodb_buffer_pool_instances | 1 |
 
| innodb_buffer_pool_size | 134217728 |
 
| innodb_change_buffering | all |
 
| innodb_log_buffer_size | 8388608 |
 
| join_buffer_size | 131072 |
 
| key_buffer_size | 16777216 |
 
| myisam_sort_buffer_size | 8388608 |
 
| net_buffer_length | 16384 |
 
| preload_buffer_size | 32768 |
 
| read_buffer_size | 131072 |
 
| read_rnd_buffer_size | 262144 |
 
| sort_buffer_size | 2097152 |
 
| sql_buffer_result | OFF |
 
+——————————+———–+
 
 
 
mysqladmin
 
 
 
#change the root password is 123456
 
mysqladmin -uroot -p password 123456
 
 
 
evan@debian:~/bakkali/software$ mysqladmin -uroot -p processlist
 
Enter password:
 
+—-+——+———–+—-+———+——+——-+——————+
 
| Id | User | Host | db | Command | Time | State | Info |
 
+—-+——+———–+—-+———+——+——-+——————+
 
| 53 | root | localhost | | Sleep | 118 | | |
 
| 54 | root | localhost | | Query | 1 | | show processlist |
 
+—-+——+———–+—-+———+——+——-+——————+
 
 
 
26.5 p639
 
mysql> show tables;
 
+—————————+
 
| Tables_in_mysql |
 
+—————————+
 
| columns_priv |
 
| db |
 
| event |
 
| func |
 
| general_log |
 
| help_category |
 
| help_keyword |
 
 
 
mysql> describe user;
 
+————————+———————————–+——+—–+———+——-+
 
| Field | Type | Null | Key | Default | Extra |
 
+————————+———————————–+——+—–+———+——-+
 
| Host | char(60) | NO | PRI | | |
 
| User | char(16) | NO | PRI | | |
 
| Password | char(41) | NO | | | |
 
| Select_priv | enum(‘N’,’Y’) | NO | | N | |
 
| Insert_priv | enum(‘N’,’Y’) | NO | | N | |
 
| Update_priv | enum(‘N’,’Y’) | NO | | N | |
 
 
 
#创建表
 
 
 
CREATE TABLE IF NOT EXISTS employees ( #
 
 
 
EMPLOYEE_ID varchar(10) not null, #// EMPLOYEE_ID 字段的类型为varchar(10),字段值不允许为空
 
 
 
FIRST_NAME varchar(10) not null,
 
 
 
LAST_NAME varchar(10) not null,
 
 
 
EMALL varchar(50) not null,
 
 
 
HIRE_DATE date, #date 类型
 
 
 
JOB_ID int not null,
 
 
 
SALARY int default 0, #//SALARY 字段默认值为0
 
 
 
MANAGER_ID int ,
 
 
 
DEPARTMENT_ID int not null,
 
 
 
primary key (EMPLOYEE_ID) ) #// 主键为EMPLOYEE_ID
 
 
 
#// 使用数据库引擎为MyISAM
 
 
 
ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 
 
mysql> describe employees;
 
+—————+————-+——+—–+———+——-+
 
| Field | Type | Null | Key | Default | Extra |
 
+—————+————-+——+—–+———+——-+
 
| EMPLOYEE_ID | varchar(10) | NO | PRI | NULL | |
 
| FIRST_NAME | varchar(10) | NO | | NULL | |
 
| LAST_NAME | varchar(10) | NO | | NULL | |
 
| EMALL | varchar(50) | NO | | NULL | |
 
| HIRE_DATE | date | YES | | NULL | |
 
| JOB_ID | int(11) | NO | | NULL | |
 
| SALARY | int(11) | YES | | 0 | |
 
| MANAGER_ID | int(11) | YES | | NULL | |
 
| DEPARTMENT_ID | int(11) | NO | | NULL | |
 
+—————+————-+——+—–+———+——-+
 
9 rows in set (0.00 sec)
 
  
#######################
 
修改新密码
 
  
set password for root@localhost = password('');
+
cat  /etc/redis/redis.conf | grep -v '#'
 +
···
 +
protected-mode no
 +
requirepass foobareLXTXe2456
 +
···
  
 +
监控 LO 127.0.0.1 可关也可不关
  
use mysql;
+
#默认开启了的
update user set password=PASSWORD('evan') where user='root'; # on mysql 5.7
+
# 启动&自启动Redis
 
+
systemctl restart redis
##最好要加这一行
+
systemctl enable redis
  
 +
update mysql.user set authentication_string=PASSWORD('OPS123456#') where user='root';
 
flush privileges;
 
flush privileges;
  
shell>mysqladmin -uroot -p password  新密码
 
#然后在提示符后输入老密码
 
  
增加新用户
+
UPDATE user SET password=password('OPS123456#') WHERE user='root';
  
格式:grant select on 数据库.* to 用户名@登录主机 identified by ‘密码’
 
举例:
 
例 1:增加一个用户 test1 密码为 abc,让他可以在任何主机上登录,并对所有数据库有
 
查询、插入、修改、删除的权限。首先用以 root 用户连入 MySQL,然后键入以下命令:
 
mysql>
 
grant select,insert,update,delete on *.* to test1@localhost identified by 'abc';
 
  
Query OK, 0 rows affected
+
#这个有效果  mariadb 10
#或者
+
use mysql  
mysql>
+
SET password for 'root'@'localhost' = password('OPS123456#');
grant all privileges on *.* to test1@localhost identified by 'abc';
 
  
flush privileges;
 
  
删除用户
+
create database jumpserver char set utf8;
delete from user where user=’用户名’ and host=’localhost’;
+
grant all on jumpserver.* to jumpserver@'%' identified by 'jumpserverLXTX136';
delete from user where user='test2' and host='localhost';
 
  
flush privileges;
 
  
查看当前使用的数据库
+
grant all on *.*  to root@'127.0.0.1' identified by 'myFD23';
select database();
 
  
表操作
+
监控了 127.0.0.1  我去  改为 0.0.0.0
 +
cat /etc/mysql/mariadb.conf.d/50-server.cnf
  
备注:操作之前使用“use <数据库名>”应连接某个数据库。
+
bind-address            = 127.0.0.1
建表
 
命令:create table <表名> (<字段名 1> <类型 1> [,..<字段名 n> <类型 n>]);
 
  
create table mm(
 
  
id int(4) not null primary key auto_increment,
 
  
name char(20) not null,
+
root@prod-fincy-jumpserver:~# netstat -nlpt
 +
Active Internet connections (only servers)
 +
Proto Recv-Q Send-Q Local Address          Foreign Address        State      PID/Program name   
 +
tcp        0      0 127.0.0.1:25            0.0.0.0:*              LISTEN      4129/exim4         
 +
tcp        0      0 127.0.0.1:3306          0.0.0.0:*              LISTEN      12034/mysqld 
  
sex int(4) not null default '0',
 
  
degree double(16,2))
+
systemctl restart mariadb
 +
</pre>
  
#ENGINE=InnoDB;
+
==* docker  docker-compose  ins==
  
ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
  
查看表结构
+
===* in jmp on docker ===
命令: desc 表名,  show create table 表名; 或者show columns from 表名
+
<pre>
mysql> describe my;
+
所以随便映射一个端口8001用于Web访问,2222用户ssh访问,因为本服务器关闭了Selinux,如果没有关闭,还需要将8001与2222加入可http的端口,在Nginx服务器将会详细配置。
 
 
mysql> desc my;
 
 
 
show columns from my;
 
 
 
删除表
 
drop table
 
 
 
插入数据
 
命令:insert into <表名> [( <字段名 1>[,..<字段名 n > ])] values ( 值 1 )[, ( 值 n )]
 
mysql> insert into my values(1,'tom',0,96);
 
 
 
mysql> insert into my(name,sex,degree) values('evan',1,90);
 
 
 
查询表中的数据
 
mysql> select * from my;
 
+—-+——+—–+——–+
 
| id | name | sex | degree |
 
+—-+——+—–+——–+
 
| 1 | tom | 0 | 96.00 |
 
| 2 | evan | 1 | 90.00 |
 
+—-+——+—–+——–+
 
 
 
#select 2020
 
#前 2 行数据
 
select * from my limit 0,2;
 
 
 
select * from my order by id limit 0,2;
 
 
 
UPDATE hello_wallet.t_wallet_user SET trade_lock_status = 0 WHERE telephone = '185206773';
 
select  *  from  hello_wallet.t_wallet_user  where  telephone = '185206773'\G
 
 
 
删除表中数据
 
命令:delete from 表名 where 表达式
 
delete from my where id=2;
 
 
 
修改表中数据
 
命令:update 表名 set 字段=新值,… where 条件
 
update my set name=’eva’ where id=1;
 
mysql> select * from my order by id limit 0,2;
 
+—-+——+—–+——–+
 
| id | name | sex | degree |
 
+—-+——+—–+——–+
 
| 1 | eva | 0 | 96.00 |
 
+—-+——+—–+——–+
 
 
 
在表中增加字段
 
命令:alter table 表名 add 字段 类型 其他;
 
例如:在表 MyClass 中添加了一个字段 pass,类型为 int(4),默认值为 0
 
mysql> alter table my add pass int(4) default '0';
 
 
 
更改表名
 
命令:rename table 原表名 to 新表名;
 
rename table my to mm;
 
 
 
更新字段内容
 
命令:update 表名 set 字段名 = 新内容
 
update 表名 set 字段名 = replace(字段名, ‘旧内容’, ‘新内容’);
 
update my set name='nick' where name='eva';
 
 
 
update my set name=replace(name,'jkjk','evan');
 
 
 
数据库导入导出
 
 
 
将数据库 com 中的 my 导出到 文件中
 
mysqldump -uroot -pevan com my > my.sql
 
 
 
数据库 mydb 的结构导出到 e:\MySQL\mydb_stru.sql 文件中
 
mysqldump -uroot -pevan com --add-drop-table >com.stru.sql
 
 
 
导出结构不导出数据 Fri Aug 21 10:48:02 CST 2020
 
mysqldump --opt -d 数据库名 -u root -p > xxx.sql
 
 
 
只导出数据不导出数据结构
 
mysqldump -u [数据库用户名] -p -t [要备份的数据库名称]>[备份文件的保存路径]
 
mysqldump -uroot -pevan -t com >com0.sql
 
 
 
#here
 
导出数据库中的Events
 
格式:mysqldump -u [数据库用户名] -p -E [数据库用户名]>[备份文件的保存路径]
 
 
 
导出数据库中的存储过程和函数
 
格式:mysqldump -u [数据库用户名] -p -R [数据库用户名]>[备份文件的保存路径]
 
 
 
从外部文件导入数据库中
 
1)使用“source”命令
 
 
 
2)使用 “<” 小于符号 *************************************** ##20160819 26.5.4 改变表结果 ALTER TABLE 数据表名 更改1 [,更改2 …] #添加TELPHONE 字段 ALTER TABLE employees add TELPHONE char(20); #更改字段 change alter table employees change TELPHONE TEL char(20); ##更改字段 类型 modify alter table employees modify TEL varchar(20); ##删除 字段 drop alter table employees drop tel; #表改名 rename alter table employees rename to emp; 26.5.5 复制数据表 CREATE TABLE 新表名 LIKE 源表名 create table employees2 like employees; #只复制了表结构, 要复制结构和数据的 为 create table emp3 select * from emp; 26.5.6 删除数据表 DROP TABLE tablename; 26.6 数据管理 26.6.1查询数据 SELECT * | 字段列表 FROM 数据表 WHERE 条件; 1.所以数据 select * from emp; 2.某些字段的数据 mysql> select EMPLOYEE_ID, last_name,salary from emp;
 
+————-+————+——–+
 
| EMPLOYEE_ID | last_name | salary |
 
+————-+————+——–+
 
| kyct | [email protected] | 9 |
 
+————-+————+——–+
 
 
 
3,满足某些条件的数据
 
mysql> select EMPLOYEE_ID, last_name,salary from emp where salary < 10000; +————-+————+——–+ | EMPLOYEE_ID | last_name | salary | +————-+————+——–+ | kyct | [email protected] | 9 | +————-+————+——–+ 4.查询数据的总数 mysql> select count(*) from emp;
 
+———-+
 
| count(*) |
 
+———-+
 
| 1 |
 
+———-+
 
 
 
26.6.2 插入
 
INSERT INTO 表名(字段1, 字段2, …) VALUES (值1,值2,…);
 
INSERT INTO 表名(字段1, 字段2, …) SELECT 字段1, 字段2, …) FROM 源表;
 
 
 
mysql> desc emp;
 
+—————+————-+——+—–+———+——-+
 
| Field | Type | Null | Key | Default | Extra |
 
+—————+————-+——+—–+———+——-+
 
| EMPLOYEE_ID | varchar(10) | NO | PRI | NULL | |
 
| FIRST_NAME | varchar(10) | NO | | NULL | |
 
| LAST_NAME | varchar(10) | NO | | NULL | |
 
| EMALL | varchar(50) | NO | | NULL | |
 
| HIRE_DATE | date | YES | | NULL | |
 
| JOB_ID | int(11) | NO | | NULL | |
 
| SALARY | int(11) | YES | | 0 | |
 
| MANAGER_ID | int(11) | YES | | NULL | |
 
| DEPARTMENT_ID | int(11) | NO | | NULL | |
 
+—————+————-+——+—–+———+——-+
 
 
 
mysql> insert into emp values (‘kyct’,’kyct’,’[email protected]’,7,’2016-08-20′,3,9,8,9);
 
 
 
insert into emp (employee_id,LAST_NAME,job_id) values (10888,’jim’,5);
 
 
 
2. 插入其它有的数据
 
mysql> create table emp2 like emp;
 
Query OK, 0 rows affected (0.34 sec)
 
 
 
mysql> select * from emp2;
 
 
 
mysql> insert into emp2 select * from emp where employee_id=10888;
 
Query OK, 1 row affected, 1 warning (0.00 sec)
 
Records: 1 Duplicates: 0 Warnings: 1
 
 
 
mysql> select * from emp2;
 
+————-+————+———–+——-+———–+——–+——–+————+—————+
 
| EMPLOYEE_ID | FIRST_NAME | LAST_NAME | EMALL | HIRE_DATE | JOB_ID | SALARY | MANAGER_ID | DEPARTMENT_ID |
 
+————-+————+———–+——-+———–+——–+——–+————+—————+
 
| 10888 | | jim | | NULL | 5 | 0 | NULL | 0 |
 
+————-+————+———–+——-+———–+——–+——–+————+—————+
 
 
 
26.6.3 更新数据
 
UPDATE 表名 SET 字段1 = 值1 [,字段2 = 值2 …] WHERE 查询条件;
 
 
 
mysql> select * from emp2;
 
+————-+————+———–+——-+———–+——–+——–+————+—————+
 
| EMPLOYEE_ID | FIRST_NAME | LAST_NAME | EMALL | HIRE_DATE | JOB_ID | SALARY | MANAGER_ID | DEPARTMENT_ID |
 
+————-+————+———–+——-+———–+——–+——–+————+—————+
 
| 10888 | | jim | | NULL | 5 | 0 | NULL | 0 |
 
+————-+————+———–+——-+———–+——–+——–+————+—————+
 
 
 
mysql> update emp2 set emall=’[email protected]’,salary=2000 where last_name=’jim’;
 
 
 
mysql> select * from emp2;
 
+————-+————+———–+—————+———–+——–+——–+————+—————+
 
| EMPLOYEE_ID | FIRST_NAME | LAST_NAME | EMALL | HIRE_DATE | JOB_ID | SALARY | MANAGER_ID | DEPARTMENT_ID |
 
+————-+————+———–+—————+———–+——–+——–+————+—————+
 
| 10888 | | jim | [email protected] | NULL | 5 | 2000 | NULL | 0 |
 
+————-+————+———–+—————+———–+——–+——–+————+—————+
 
 
 
26.6.4 删除数据
 
DELETE FROM 表名 WHERE 查询条件;
 
delete from emp where last_name=’jim’;
 
 
 
26.7 索引管理
 
 
 
26.7.1 创建索引
 
mysql> create table depar (
 
-> depa_id char(10) not null,
 
-> depa_name varchar(50) not null,
 
-> mana_id char(10),
 
-> index ind_depa01 (depa_id) //创建索引ind_depa01
 
-> );
 
 
 
#上面为创建表depar的同时,在 depa_id 字段创建一个名为 ind_depa01 的索引
 
如果表已存在 CREATE INDEX
 
 
 
CREATE [UNIQUE] INDEX 索引名 ON 表名 (字段1 [,字段2 …]);
 
create unique index ind_depa02 on dep(EMPLOYEE_ID);
 
 
 
#表emp 的 EMPLOYEE_ID 字段上,创建一个名为 ind_depa02 的唯一索引
 
create unique index ind_depa02 on emp(EMPLOYEE_ID);
 
 
 
26.7.2 删除索引
 
DROP INDEX 索引名 ON 表名
 
 
 
26.8 用户和权限管理
 
 
 
mysql> select host,user,password,select_priv from user;
 
+———–+——————+——————————————-+————-+
 
| host | user | password | select_priv |
 
+———–+——————+——————————————-+————-+
 
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | Y |
 
| debian | root | *CB0AB6862555C52CBE5D736D089D8D56A468AE12 | Y |
 
| 127.0.0.1 | root | *CB0AB6862555C52CBE5D736D089D8D56A468AE12 | Y |
 
| ::1 | root | *CB0AB6862555C52CBE5D736D089D8D56A468AE12 | Y |
 
| localhost | debian-sys-maint | *E7BF66CEE2E00177E47E00EDE25DAFADF8AADF17 | Y |
 
+———–+——————+——————————————-+————-+
 
 
 
26.8.2 用户管理
 
 
 
1.添加
 
#add user 记得要刷新权限表
 
insert into user (host,user,password) values(‘%’,’test’,password(‘123456’));
 
flush privileges;
 
 
 
2.用户查看
 
#查看所有用户 在这个新授权时非常有用 也就是看用户是不是已存在
 
mysql> SELECT user,host,password FROM mysql.user;
 
 
 
#查看MySQL的当前用户
 
mysql> SELECT USER();
 
 
 
 
 
 
 
3.更新口令
 
mysql> update user set password=password(‘1234′) where user=’test’;
 
mysql> flush privileges;
 
 
 
delete from user where user=’test’;
 
 
 
26.8.3 用户授权
 
 
 
GRANT 权限[(字段)] ON 数据库名.表名 TO 用户名@域名或者ip 地址 [ IDENTIFIED BY ‘口令’ ] [ WITH GRANT OPTION
 
];
 
 
 
1.授权数据库中所有的对象的权限
 
hr库中所有的表的查询权限授给 evan
 
grant select on hr.* to evan;
 
 
 
2.授权数据库中个别对象的权限
 
 
 
#库hr中数据表emp 的查询和更新权限授给 test用户
 
mysql> grant select on hr.emp to test;
 
 
 
mysql> grant update on hr.emp to test;
 
 
 
3.控制访问的主机
 
grant all on dbname.tablename to user@’ip’;
 
 
 
4.
 
授test 用户 hr.emp 表的删除权限,并允许test 把该项权限授其它的用户
 
grant delete on hr.emp to test with grant option;
 
 
 
5 创建用户
 
 
 
grant select on evan.emp to sam identified by ‘123’;
 
 
 
mysql> select host,user,password from user;
 
+———–+——————+——————————————-+
 
| host | user | password |
 
+———–+——————+——————————————-+
 
| % | test | *A4B6157319038724E3560894F7F932C8886EBFCF |
 
| % | evan | |
 
| % | sam | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
 
+———–+——————+——————————————-+
 
CREATE USER evan@localhost IDENTIFIED BY ‘1234’;
 
 
 
26.8.4 回收权限
 
 
 
 
 
REVOKE 权限 [( 字段)] ON dbname.tablename from user@ip
 
 
 
revoke select on hr.* from test;
 
 
 
mysql创建用户以及授权
 
http://blog.linuxchina.net/?p=1344
 
 
 
mysql授权查看
 
http://blog.linuxchina.net/?p=950
 
 
 
 
 
 
 
26.9 mysql 备份恢复 (5种 mysqldump,mysqlhocopy,sql,binlog,直接备份数据文件 )
 
 
 
26.9.1 mysqldump
 
1. 导出指定的表,不指定将导出库中的所有表
 
mysqldump [options] dbname [table]
 
 
 
2.导出一个多个指定数据库中的所有表
 
mysqldump [options] –database dbname1 [dbname2,…]
 
 
 
3.导出系统中所有数据库
 
mysqldump [options] –all-databases
 
 
 
常用的选项
 
–databases,-B 指定要导出的库
 
-default-character-set=charset_name 默认字符集
 
–ignore-table=dbname.tablename #忽略的表,不导出
 
–lock-all-tables, -X 导出前,锁定所以的数据表,保持系统数据的一致
 
–lock-tables, -l 锁定当前导出的数据表 #这个用处应该比较多
 
–log-error=filnename 保存错误和警告日志到文件
 
–no-create-db, -n 只导出数据,不导出CREATE TABLE 语句
 
–no-data, -d 只导出表结构,不导出数据
 
–routines, -R 导出存储过程和函数
 
 
 
1.备份表
 
mysqldump -uroot -p dbname table >table.sql
 
 
 
2.整个库
 
mysqldump -uroot -p –database dbname > db.sql
 
 
 
3.只导出表结构
 
mysqldump -uroot -p –no-data dbname table >table.sql
 
 
 
4.恢复数据
 
mysql -uroot -p dbanne < file.sql
 
或者 source
 
 
 
****************************************************************
 
 
 
26.9.2 mysqlhotcopy 感觉不好用
 
其实是使用lock tables cp scp 来完成备份的 只能备份myisam存储引擎
 
1.备份
 
 
 
2.恢复 直接是 cp -Rf src targer
 
 
 
26.9.3 使用SQL语句备份和恢复
 
BACKUP TABLE ,SELECT NITO OUTFILE
 
 
 
26.9.4 二进制日志(binlog)
 
恢复
 
mysqlbinlog -d games_s25 --start-datetime="2016-07-25 02:05:00" --stop-datetime="2016-07-25 04:40:00" "mysql-bin.000201" | mysql -uroot -ppassword
 
 
 
26.9.5 直接备份数据文件 ,flush tablename with read lock;#会比较 好
 
MySQL基本操作
 
 
 
 
 
#其它
 
#查看当前写入的日志
 
mysql> show master status ;
 
 
 
#查看某一库的字符集
 
 
 
mysql> show create database test;
 
 
 
 
 
#查看MySQL支持的字符集
 
1
 
mysql> show character set ;
 
#查看默认字符集
 
  
mysql> show variables like '%char%';
+
#我用这个  注意这个 IP  特别是多个机器会不小心搞错
 +
docker run --name jms_all -d \
 +
-v /opt/jumpserver:/opt/jumpserver/data/media \
 +
-p 8080:80 \
 +
-p 2222:2222 \
 +
-e SECRET_KEY=secret \
 +
-e BOOTSTRAP_TOKEN=secret \
 +
-e DB_HOST=172.16.220.146 \
 +
-e DB_PORT=3306 \
 +
-e DB_USER=jumpserver \
 +
-e DB_PASSWORD=jumpserverLXTX136 \
 +
-e DB_NAME=jumpserver \
 +
-e REDIS_HOST=172.16.220.146 \
 +
-e REDIS_PORT=6379 \
 +
-e REDIS_PASSWORD=foobareLXTXe2456 \
 +
-e JUMPSERVER_KEY_DIR=/config/guacamole/keys \
 +
-e GUACAMOLE_HOME=/config/guacamole \
 +
-e JUMPSERVER_SERVER=http://127.0.0.1:8080 \
 +
jumpserver/jms_all:v2.2.1
  
查看某一表的字符集
 
mysql> show create table test.t1 \G
 
  
#修改字符集
 
  
mysql>alter database mydb character set utf-8;
+
#官方文档的
#可以直接在配置文件中做添加,然后重启服务
+
docker run --name jms_all -d \
 
+
  -v /opt/jumpserver/data:/opt/jumpserver/data \
[client]
+
  -p 80:80 \
character_set_server = utf8
+
  -p 2222:2222 \
+
  -e SECRET_KEY=xxxxxx \
[mysqld]
+
  -e BOOTSTRAP_TOKEN=xxx \
character_set_server = utf8  </pre>
+
  -e DB_HOST=192.168.x.x \
 
+
  -e DB_PORT=3306 \
==== 表操作(创建和插入)====
+
  -e DB_USER=root \
 +
  -e DB_PASSWORD=xxx \
 +
  -e DB_NAME=jumpserver \
 +
  -e REDIS_HOST=192.168.x.x \
 +
  -e REDIS_PORT=6379 \
 +
  -e REDIS_PASSWORD=xxx \
 +
  --privileged=true \
 +
  jumpserver/jms_all:v2.2.1
 +
 
 +
 
 +
  https://spex.top/archives/docker-jumpserver.html
 +
 
 +
  mysql 用户和密码写反了
 +
 
 +
  django.db.utils.OperationalError: (2006, "Access denied for user 'jumpserverLXTX136'@'172.17.0.2' (using password: YES)")
 +
 
 +
  </pre>
 +
 
 +
== USAGE ==
 
<pre>
 
<pre>
create table t1(name varchar(20),fa char(1));
+
  要用空上格式
insert into t1 values("e","m");
+
  暂不支持OPENSSH格式的密钥,使用 ssh-keygen -t rsa -m pem生成
  
create table t2(name varchar(20),fa char(1));
 
insert into t2 values("t","m");
 
  
  
DROP TABLE IF EXISTS `t_teacher`;
+
grant all on *.* to lxtx@'%' identified by 'FINCy5609824hHixxxxx';
CREATE TABLE `t_teacher` (
 
  `id` int(11) NOT NULL,
 
  `t_name` varchar(255) DEFAULT NULL,
 
  PRIMARY KEY (`id`)
 
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 
  
 
</pre>
 
</pre>
  
清空数据
 
RUNCATE TABLE table
 
  
  
==== 表操作(update)====
+
[http://docs.jumpserver.org/zh/docs/dockerinstall.html Docker 安装]
<pre>
 
  
UPDATE t_market_timer_task set status=1  where task_id=1;
 
  
ySQL [market]> select  * from  t_market_timer_task where task_id=1;
 
+---------+--------------------------+--------------------------+-----------------+--------+-------------------------------------------------------------+---------+---------------------+-----------+---------------------+-----------+----------+
 
| task_id | task_name                | task_describe            | cron_expression | status | job_class                                                  | remarks | create_time        | create_by | update_time        | update_by | del_flag |
 
+---------+--------------------------+--------------------------+-----------------+--------+-------------------------------------------------------------+---------+---------------------+-----------+---------------------+-----------+----------+
 
| 1      | Global-MarketOverviewJob |数据拉取        | 0 0/5 * * * ?  |      1 | com.market.web.schedule.global.MarketOverviewJob | NULL    | 2011-07-30 14:39:21 | NULL      | 2011-07-30 14:39:23 | NULL      |        0 |
 
+---------+--------------------------+--------------------------+-----------------+--------+-------------------------------------------------------------+---------+---------------------+-----------+---------------------+-----------+----------+
 
1 row in set (0.01 sec)
 
  
</pre>
+
[http://docs.jumpserver.org/zh/docs/migration.html 服务迁移]
  
==== 数据库及表编码查看====
+
==端口 ==
 
<pre>
 
<pre>
查看数据库编码格式
 
show variables like 'character_set_database';
 
 
  
查看数据表的编码格式
+
    Jumpserver 默认 Web 端口为 8080/tcp, 默认 WS 端口为 8070/tcp, 配置文件 jumpserver/config.yml
show create table <表名>;
+
    koko 默认 SSH 端口为 2222/tcp, 默认 Web Terminal 端口为 5000/tcp 配置文件在 koko/config.yml
 +
    Guacamole 默认端口为 8081/tcp, 配置文件 /config/tomcat9/conf/server.xml
 +
    Nginx 默认端口为 80/tcp
 +
    Redis 默认端口为 6379/tcp
 +
    Mysql 默认端口为 3306/tcp
  
 
</pre>
 
</pre>
[https://blog.csdn.net/mingyu1016/article/details/54017918 查看mysql数据库及表编码格式]
 
 
 
 
[https://blog.csdn.net/thomas0yang/article/details/8175361 MySQL数据库维护手册]
 
 
==常用运维脚本==
 
<pre>
 
 
mysql -h databases.com -uadmin -p`cat /evan/11`  < $1
 
 
#Usage  bash dbin.sh  你的sql脚本
 
 
 
 
for loop in  `cat ../li`
 
do
 
 
 
  mysql  -uroot -p'222233'  -h 127.0.0.1  sns  < $loop.sql
 
# echo  $loop
 
done
 
 
 
cat  evan/dump
 
for loop in  `cat li`
 
do
 
 
  mysqldump    -uroot  -ppassword  -h youip  sns $loop >$loop.sql
 
#echo  $loop
 
done
 
 
 
for  loop in  cat list
 
do
 
  
mysql -uroot -p45EOV -h127.0.0.1 -e  " CREATE DATABASE ${loop} CHARACTER SET utf8mb4  COLLATE utf8mb4_general_ci;"
+
===ssh===
 +
ssh -p2222
  
</pre>
+
== sftp==
 +
sftp -P 大写的P 不是小写的p
  
==mysqldump==
+
=troubleshooting=
 +
==koko==
 
<pre>
 
<pre>
命令行下具体用法如下:  mysqldump -u用戶名 -p密码 -d 數據库名 表名 脚本名;
+
Connecting to 1.231.144.243:2222...
远程的 记得加-h
+
Could not connect to '1.231.144.243' (port 2222): Connection failed.
 
 
    1、导出數據库為dbname的表结构(其中用戶名為root,密码為dbpasswd,生成的脚本名為db.sql)
 
    mysqldump -uroot -pdbpasswd -d dbname >db.sql;
 
 
 
    2、导出數據库為dbname某张表(test)结构
 
    mysqldump -uroot -pdbpasswd -d dbname test>db.sql;
 
 
 
    3、导出數據库為dbname所有表结构及表數據(不加-d)
 
    mysqldump -uroot -pdbpasswd  dbname >db.sql;
 
 
 
    4、导出數據库為dbname某张表(test)结构及表數據(不加-d)
 
    mysqldump -uroot -pdbpasswd dbname test>db.sql;
 
  
 +
可见 不太正常  我在海外也 telnet  2222 不通  restart 搞定
 +
[root@ntos ~]# telnet  127.0.0.1  2222
 +
Trying 127.0.0.1...
 +
Connected to 127.0.0.1.
 +
Escape character is '^]'.
 +
Connection closed by foreign host.
 +
[roottos ~]# docker ps
 +
CONTAINER ID        IMAGE                      COMMAND            CREATED            STATUS              PORTS                                            NAMES
 +
f235b4dae318        jumpserver/jms_coco:1.4.9  "entrypoint.sh"    10 days ago        Up 10 days          0.0.0.0:2222->2222/tcp, 0.0.0.0:5000->5000/tcp  jms_coco
 +
#重启这个 docker 容器正常了
 +
[root@tos ~]# docker restart  f235b4dae318
 
</pre>
 
</pre>
 +
=see also=
  
 +
[https://www.jianshu.com/p/81306abfba16 使用JumpServer管理你的服务器]
  
==trouble==
 
  
MySQL数据库名中划线问题
+
[https://blog.csdn.net/wanglei_storage/article/details/51002206 jumpserver 堡垒机配置使用图文详解]
  
数据库的名字中有中划线,导致名字识别失败,用了 use dbname; 依然提示No database selected
+
[https://blog.csdn.net/imtech/article/details/89332410 Jumpserver入门介绍]
解决方案
 
  
把数据库名用反引号 `` (和命令执行同一个的)引起来就可以了
+
[https://blog.csdn.net/weixin_41004350/article/details/80183591 centos7 jumpserver安装与使用详解]
==参考==
 
http://dufei.blog.51cto.com/382644/88646
 
  
 +
[https://docs.jumpserver.org/zh/master/admin-guide/quick_start/ 快速入门]
  
[https://blog.csdn.net/hello_zhou/article/details/51864566 MySQL常用命令总结]
 
  
 +
==install==
  
[https://www.cnblogs.com/imyalost/p/6756975.html MySQL(十四)管理维护及性能优化]
+
[https://spex.top/archives/docker-jumpserver.html Docker部署JumpServer]
  
[https://www.cnblogs.com/chenmh/p/5300370.html MySQL mysqldump数据导出详解]
+
https://docs.jumpserver.org/zh/master/install/docker_install/
  
 +
[https://www.cnblogs.com/xiao987334176/p/12172811.html Jumpserver docker搭建]
  
[[category:mysql]]
+
[https://blog.51cto.com/14163901/2415413 docker下jumpserver跳板机 /堡垒机详细部署]
 +
[[category:ops]]

2020年9月1日 (二) 06:25的版本

jumpserver install


加个开机启动 

#在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:
$docker run --restart=always
#如果已经启动了则可以使用如下命令:
$docker update --restart=always <CONTAINER ID>

重启试一下 

* init

* ins mariadb redis

apt  install mariadb-client   mariadb-server redis -y


cat  /etc/redis/redis.conf | grep -v '#'
···
protected-mode no
requirepass foobareLXTXe2456
···

监控 LO 127.0.0.1 可关也可不关 

#默认开启了的 
# 启动&自启动Redis
systemctl restart redis
systemctl enable redis

update mysql.user set authentication_string=PASSWORD('OPS123456#') where user='root';
flush privileges;


UPDATE user SET password=password('OPS123456#') WHERE user='root';


#这个有效果  mariadb 10 
use mysql 
SET password for 'root'@'localhost' = password('OPS123456#');


create database jumpserver char set utf8;
grant all on jumpserver.* to jumpserver@'%' identified by 'jumpserverLXTX136';


grant all on *.*  to root@'127.0.0.1' identified by 'myFD23';

监控了 127.0.0.1  我去   改为 0.0.0.0
cat /etc/mysql/mariadb.conf.d/50-server.cnf

bind-address            = 127.0.0.1



root@prod-fincy-jumpserver:~# netstat -nlpt 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      4129/exim4          
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      12034/mysqld   


systemctl restart mariadb

* docker docker-compose ins

* in jmp on docker

所以随便映射一个端口8001用于Web访问,2222用户ssh访问,因为本服务器关闭了Selinux,如果没有关闭,还需要将8001与2222加入可http的端口,在Nginx服务器将会详细配置。

#我用这个   注意这个 IP  特别是多个机器会不小心搞错 
docker run --name jms_all -d \
-v /opt/jumpserver:/opt/jumpserver/data/media \
-p 8080:80 \
-p 2222:2222 \
-e SECRET_KEY=secret \
-e BOOTSTRAP_TOKEN=secret \
-e DB_HOST=172.16.220.146 \
-e DB_PORT=3306 \
-e DB_USER=jumpserver \
-e DB_PASSWORD=jumpserverLXTX136 \
-e DB_NAME=jumpserver \
-e REDIS_HOST=172.16.220.146 \
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD=foobareLXTXe2456 \
-e JUMPSERVER_KEY_DIR=/config/guacamole/keys \
-e GUACAMOLE_HOME=/config/guacamole \
-e JUMPSERVER_SERVER=http://127.0.0.1:8080 \
jumpserver/jms_all:v2.2.1



#官方文档的 
docker run --name jms_all -d \
  -v /opt/jumpserver/data:/opt/jumpserver/data \
  -p 80:80 \
  -p 2222:2222 \
  -e SECRET_KEY=xxxxxx \
  -e BOOTSTRAP_TOKEN=xxx \
  -e DB_HOST=192.168.x.x \
  -e DB_PORT=3306 \
  -e DB_USER=root \
  -e DB_PASSWORD=xxx \
  -e DB_NAME=jumpserver \
  -e REDIS_HOST=192.168.x.x \
  -e REDIS_PORT=6379 \
  -e REDIS_PASSWORD=xxx \
  --privileged=true \
  jumpserver/jms_all:v2.2.1
  
  
  https://spex.top/archives/docker-jumpserver.html
  
  mysql 用户和密码写反了 
  
  django.db.utils.OperationalError: (2006, "Access denied for user 'jumpserverLXTX136'@'172.17.0.2' (using password: YES)")
  
  

USAGE

  要用空上格式 
  暂不支持OPENSSH格式的密钥,使用 ssh-keygen -t rsa -m pem生成



grant all on *.* to lxtx@'%' identified by 'FINCy5609824hHixxxxx';


Docker 安装


服务迁移

端口


    Jumpserver 默认 Web 端口为 8080/tcp, 默认 WS 端口为 8070/tcp, 配置文件 jumpserver/config.yml
    koko 默认 SSH 端口为 2222/tcp, 默认 Web Terminal 端口为 5000/tcp 配置文件在 koko/config.yml
    Guacamole 默认端口为 8081/tcp, 配置文件 /config/tomcat9/conf/server.xml
    Nginx 默认端口为 80/tcp
    Redis 默认端口为 6379/tcp
    Mysql 默认端口为 3306/tcp

ssh

ssh -p2222

sftp

sftp -P 大写的P 不是小写的p

troubleshooting

koko

Connecting to 1.231.144.243:2222...
Could not connect to '1.231.144.243' (port 2222): Connection failed.

可见 不太正常  我在海外也 telnet  2222 不通   restart 搞定 
[root@ntos ~]# telnet   127.0.0.1  2222
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Connection closed by foreign host.
[roottos ~]# docker ps 
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS                                            NAMES
f235b4dae318        jumpserver/jms_coco:1.4.9   "entrypoint.sh"     10 days ago         Up 10 days          0.0.0.0:2222->2222/tcp, 0.0.0.0:5000->5000/tcp   jms_coco
#重启这个 docker 容器正常了 
[root@tos ~]# docker restart  f235b4dae318

see also

使用JumpServer管理你的服务器


jumpserver 堡垒机配置使用图文详解

Jumpserver入门介绍

centos7 jumpserver安装与使用详解

快速入门


install

Docker部署JumpServer

https://docs.jumpserver.org/zh/master/install/docker_install/

Jumpserver docker搭建

docker下jumpserver跳板机 /堡垒机详细部署