王某某的笔记

记录我的编程之路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
@echo off

rem 想用bat 做一个递归清理文件
rem 目前就是递归执行一下 maven的清理命令
rem 语法真的是渣

rem echo 当前盘符:%~d0
rem echo 当前盘符和路径:%~dp0
rem echo 当前批处理全路径:%~f0
rem echo 当前盘符和路径的短文件名格式:%~sdp0
rem echo 当前CMD默认目录:%cd%

echo ************************************
echo ************ 清理数据 **************
echo ************************************

IF "%1"=="" (
echo 清理目录:%cd%
set prodir=%cd%
) ELSE (
echo 当前参数参数是:[%1]
echo 清理目录:%1
set prodir=%1
if exist %1/ (
cd %1
) else (
echo 目录:[%1]不存在,即将退出!
pause
exit
)
)


rem echo 路径:
rem chdir


for /D %%s in (*) do (

echo 当前循环的值是:%%s


REM 跳过git目录

IF %%s==.git (
echo 这是一个git目录,跳过

) ELSE (
echo 进入目录:%%s
cd %%s
REM echo 判断pom文件是否存在
REM dir

IF EXIST pom.xml (
echo 存在pom文件,开始执行清理命令...

mvn clean

@echo off

) ELSE (
echo 不存在pom文件,进入下一层目录
REM goto BB
REM call %~f0 %cd%
call %~f0

echo 子目录处理完成

)

echo 退出目录:%%s

cd ..
)

echo 本次循环结束,循环值是:%%s
echo ============================================================

)

echo 执行完成

  1. 安装nodejs环境

    1
    2
    3
    4
    5
    6
    7
    wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz

    tar -zxvf node-v4.4.7-linux-x64.tar.gz

    export PATH=$PATH:/soft/node-v4.4.7-linux-x64/bin


    nodejs包中已经包含了nmp
    测试

    1
    2
    3
    4
    5
    node --version
    v4.4.7

    npm --version
    2.15.8
  2. 安装grunt
    安装grunt命令行工具grunt-cli

    1
    npm install -g grunt-cli

    安装grunt及其插件

    1
    npm install -g grunt --save-dev

    测试

    1
    2
    grunt -version
    grunt-cli v1.2.0
  3. 安装elasticsearch-head
    如果没有Git先安装

    1
    2
    yum install git

    先克隆项目

    1
    2
    git clone git://github.com/mobz/elasticsearch-head.git

    安装

    1
    2
    3
    4
    5
    6
    cd elasticsearch-head

    npm install

    npm install grunt --save

    elasticsearch-head的配置文件是Gruntfile.js,默认监听在127.0.0.1下9100端口

然后cd /usr/local/elasticsearch-head 执行

1
grunt server

浏览器访问 http://172.16.31.220:9100/



问题:

启动完之后,head主控页面是可以显示的,但是显示连接失败

1
“集群健康值: 未连接”

查资料:解决方案,修改elasticsearch.yml文件

1
2
3
4
vim $ES_HOME$/config/elasticsearch.yml
# 增加如下字段
http.cors.enabled: true
http.cors.allow-origin: "*"

重启es和head即可


说明:

key 说明
http.cors.enabled 是否支持跨域,默认为false
http.cors.allow-origin 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?://localhost(:[0-9]+)?/
http.cors.max-age 浏览器发送一个“预检”OPTIONS请求,以确定CORS设置。最大年龄定义多久的结果应该缓存。默认为1728000(20天)
http.cors.allow-methods 允许跨域的请求方式,默认OPTIONS,HEAD,GET,POST,PUT,DELETE
http.cors.allow-headers 跨域允许设置的头信息,默认为X-Requested-With,Content-Type,Content-Length
http.cors.allow-credentials 是否返回设置的跨域Access-Control-Allow-Credentials头,如果设置为true,那么会返回给客户端。

使用Privoxy 将socks5代理转成http代理

操作系统 CentOS 7

1、先安装epel源

1
2
3
4
5
6
7
8
yum install epel-release

#安装完成之后可以通过下面的命令查看
yum repolist


#可以看到多了一个
#Extra Packages for Enterprise Linux 7 - x86_64

2、使用yum命令安装

用yum命令看一下,是最新版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 yum info privoxy

名称 :privoxy
架构 :x86_64
版本 :3.0.26
发布 :1.el7
大小 :936 k
源 :epel/x86_64
简介 : Privacy enhancing proxy
网址 :http://www.privoxy.org/
协议 : GPLv2+
描述 : Privoxy is a web proxy with advanced filtering capabilities for
: protecting privacy, filtering web page content, managing cookies,
: controlling access, and removing ads, banners, pop-ups and other
: obnoxious Internet junk. Privoxy has a very flexible configuration and
: can be customized to suit individual needs and tastes. Privoxy has application
: for both stand-alone systems and multi-user networks.
:
: Privoxy is based on the Internet Junkbuster.

直接安装 privoxy

1
2
3

yum install privoxy

3、 配置

配置文件位于目录:**/etc/privoxy**

3.1、修改config文件

说明:
https://www.privoxy.org/user-manual/config.html

修改绑定地址,搜索 ==listen-address== ,修改需要绑定的IP

1
listen-address  0.0.0.0:8118

设置socks5 转发,搜索 ==forward-socks5t== ,去掉注释,修改对应IP

1
2

forward-socks5t / 118.193.225.166:9150 .

注意后面的点不要删掉

配置不走代理,直接本地转发的

1
2
forward         192.168.*.*/     .
forward 127.*.*.*/ .

由于网络不稳定,经常出现503,增加转发重试
默认值是:0

1
forwarded-connect-retries  1

配置最大客户端的连接
默认值是:128

1
max-client-connections 256

这个用于开启和关闭广告过滤和内容过滤,1表示开启,0表示关闭
默认值是:1

1
toggle  0

共享连接

是否保持活动的传出连接应该在不同的传入连接之间共享

这个还没怎么测试,按照字面意思理解

1
connection-sharing 1
3.1、修改user.action 配置文件

拦截服务端禁止在iframe中加载的响应头,在user.action 末尾添加

只能处理http的连接

1
2
{ +crunch-server-header{X-Frame-Options} }
/

修改服务端的响应头,去掉设置cookie时的 HttpOnly ,让客户端可以通过js获取cookie
Privoxy 使用类似Perl的 s/// 操作来实现对内容的替换修改

注意,它使用的是|作为分隔符,而不是/,因为模式包含一个正斜杠,否则必须以反斜杠(\)来转义。如果表达式中有|线则用@符号。(文档中没有看到明确的说明,但是例子中是这么写的)

只能处理http的连接

在user.filter文件中新增

1
2
SERVER-HEADER-FILTER: delete-http-only delete server response head setCookie http only tag
s@^(Set-Cookie.+)(;[ ]*httponly)@$1@i

在user.action文件中新增

1
2
3
{+server-header-filter{delete-http-only}}
/


4、启动服务

1
2
3
4
5
6
7
8
9
10
11
$ systemctl start privoxy
$ systemctl status privoxy

● privoxy.service - Privoxy Web Proxy With Advanced Filtering Capabilities
Loaded: loaded (/usr/lib/systemd/system/privoxy.service; disabled; vendor preset: disabled)
Active: active (running) since 三 2017-11-15 16:38:12 CST; 9s ago
Process: 22643 ExecStart=/usr/sbin/privoxy --pidfile /run/privoxy.pid --user privoxy /etc/privoxy/config (code=exited, status=0/SUCCESS)
Main PID: 22644 (privoxy)
CGroup: /system.slice/privoxy.service
└─22644 /usr/sbin/privoxy --pidfile /run/privoxy.pid --user privoxy /etc/privoxy/config

5、检查测试

1
2
3
netstat -an | grep 8118

tcp 0 0 127.0.0.1:8118 0.0.0.0:* LISTEN

6、浏览器访问

浏览器配置代理指向privoxy

访问地址:http://p.p/ 可以进入到privoxy的一个管理页面

访问地址:https://check.torproject.org/ 可以进入到一个tor检查页面

centos7安装socks5

项目地址:
http://ss5.sourceforge.net

下载地址:
https://sourceforge.net/projects/ss5/files/

一次安装配置的记录

下载解压

1
2
3
4
$ wget https://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz

$ tar -zxvf ss5-3.8.9-8.tar.gz

编译

1
2
3
4
5
6
7
8
9
10
11
12
13
$ cd ss5-3.8.9

$ ./configure --prefix=/usr/local/ss5

#提示缺省 pam 模块
......
......
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking security/pam_misc.h usability... no
checking security/pam_misc.h presence... no
checking for security/pam_misc.h... no
configure: error: *** Some of the headers weren't found ***

安装pam

1
$ yum -y install pam pam-devel

再编译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ ./configure --prefix=/usr/local/ss5
......
......
checking for socket... yes
checking for strdup... yes
checking for strtol... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating modules/Makefile
config.status: creating modules/mod_authen/Makefile
config.status: creating modules/mod_author/Makefile
config.status: creating modules/mod_balance/Makefile
config.status: creating modules/mod_bandwidth/Makefile
config.status: creating modules/mod_dump/Makefile
config.status: creating modules/mod_filter/Makefile
config.status: creating modules/mod_log/Makefile
config.status: creating modules/mod_proxy/Makefile
config.status: creating modules/mod_socks4/Makefile
config.status: creating modules/mod_socks5/Makefile
config.status: creating modules/mod_statistics/Makefile
config.status: creating common/Makefile
config.status: creating src/Makefile
config.status: creating include/config.h
1
2
3
4
5
6
7
8
9
10
11
$ make 
make[1]: 进入目录“/data/softwares/ss5-3.8.9/common”
gcc -g -O2 -DLINUX -D_FILE_OFFSET_BITS=64 -I . -I ../include -fPIC -c -o SS5OpenLdap.o SS5OpenLdap.c
SS5OpenLdap.c:29:18: 致命错误:ldap.h:没有那个文件或目录
#include <ldap.h>
^
编译中断。
make[1]: *** [SS5OpenLdap.o] 错误 1
make[1]: 离开目录“/data/softwares/ss5-3.8.9/common”
make: *** [common] 错误 2

再装ldap

1
2
yum -y install openldap-devel 

再来一次

1
2
3
4
5
6
7
8
9
10
11
12
$ make
make[1]: 进入目录“/data/softwares/ss5-3.8.9/common”
gcc -g -O2 -DLINUX -D_FILE_OFFSET_BITS=64 -I . -I ../include -fPIC -c -o SS5OpenLdap.o SS5OpenLdap.c
gcc -g -O2 -DLINUX -D_FILE_OFFSET_BITS=64 -I . -I ../include -fPIC -c -o SS5Radius.o SS5Radius.c
In file included from SS5Radius.c:22:0:
../include/SS5Radius.h:22:25: 致命错误:openssl/md5.h:没有那个文件或目录
#include <openssl/md5.h>
^
编译中断。
make[1]: *** [SS5Radius.o] 错误 1
make[1]: 离开目录“/data/softwares/ss5-3.8.9/common”
make: *** [common] 错误 2

再安装openssl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ yum install openssl-devel

......
......

已安装:
openssl-devel.x86_64 1:1.0.2k-8.el7
作为依赖被安装:
keyutils-libs-devel.x86_64 0:1.5.8-3.el7 krb5-devel.x86_64 0:1.15.1-8.el7 libcom_err-devel.x86_64 0:1.42.9-10.el7 libkadm5.x86_64 0:1.15.1-8.el7 libselinux-devel.x86_64 0:2.5-11.el7
libsepol-devel.x86_64 0:2.5-6.el7 libverto-devel.x86_64 0:0.2.5-4.el7 pcre-devel.x86_64 0:8.32-17.el7 zlib-devel.x86_64 0:1.2.7-17.el7

作为依赖被升级:
e2fsprogs.x86_64 0:1.42.9-10.el7 e2fsprogs-libs.x86_64 0:1.42.9-10.el7 krb5-libs.x86_64 0:1.15.1-8.el7 libcom_err.x86_64 0:1.42.9-10.el7 libselinux.x86_64 0:2.5-11.el7
libselinux-python.x86_64 0:2.5-11.el7 libselinux-utils.x86_64 0:2.5-11.el7 libss.x86_64 0:1.42.9-10.el7 pcre.x86_64 0:8.32-17.el7

完毕!

再来一次就正常了

1
2
3
make

make install

安装完成之后相关配置文件在:
/etc/opt/ss5/ 目录下

1
2
3
4
5
$ ll /etc/opt/ss5/
总用量 20
-rw-r--r-- 1 root root 11609 5月 2 15:07 ss5.conf
-rw-r--r-- 1 root root 118 5月 2 15:07 ss5.ha
-rw-r--r-- 1 root root 1 5月 2 15:07 ss5.passwd

启动一下试试看

先给文件加上执行权限

1
chmod +x /etc/rc.d/init.d/ss5

启动服务

1
2
3
$ service ss5 start
Reloading systemd: [ 确定 ]
Starting ss5 (via systemctl): [ 确定 ]

检查一下端口(默认使用1080端口)

1
2
$ netstat -an | grep 1080
tcp 0 0 0.0.0.0:1080 0.0.0.0:* LISTEN

测试一下

1
2
$ curl --socks5 127.0.0.1:1080 http://www.baidu.com
curl: (7) No authentication method was acceptable. (It is quite likely that the SOCKS5 server wanted a username/password, since none was supplied to the server on this connection.)

并不行

修改ss5.conf文件试试看
去掉 auth 和 permit 两项配置的注释

1
2
3
4
5
6
7
8
9
10
11
12
13
......
......
# SHost SPort Authentication
#
auth 0.0.0.0/0 - -

......
......
# /////////////////////////////////////////////////////////////////////////////////////////////////
# Auth SHost SPort DHost DPort Fixup Group Band ExpDate
#
permit - 0.0.0.0/0 - 0.0.0.0/0 - - - - -

重启服务

1
2
3
4
[root@wwh215 init.d]# service ss5 stop 
Stopping ss5 (via systemctl): [ 确定 ]
[root@wwh215 init.d]# service ss5 start
Starting ss5 (via systemctl): [ 确定 ]

再用curl命令测试,能正常访问了

1
2
curl --socks5 127.0.0.1:1080 http://www.baidu.com

下一步测试需要授权的,使用用户名、密码授权

修复ss5.conf文件

后面改成 u

1
auth    0.0.0.0/0               -               u

修改ss5.passwd,增加一对用户名密码

1
test test

重启服务,再用上面的curl命令测试,发现又不能访问了
加上用户名密码就可以访问了

1
curl --socks5 test:test@127.0.0.1:1080 --user test:test http://www.baidu.com   

测试完成

将ss5加入开机自启动
1
chkconfig --add ss5

精简版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ yum install pam-devel openldap-devel openssl-devel

#如果没有编译环境,也可以把gcc和make也安装上
$ yum -y install gcc automake make pam-devel openldap-devel cyrus-sasl-devel openssl-devel


$ wget https://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz

$ tar -zxvf ss5-3.8.9-8.tar.gz

$ cd ss5-3.8.9

$ ./configure --prefix=/usr/local/ss5

$ make

$ make install

$ chmod +x /etc/rc.d/init.d/ss5

# 修改 /etc/opt/ss5/ss5.conf 文件
# 去掉 auth 和 permit 前面的注释

$ service ss5 start


修改ss5启动的参数,自定义代理端口

默认是1080

修改文件 /etc/sysconfig/ss5

1
#SS5_OPTS=” -u root”

取消注释,修改成下面这样

1
SS5_OPTS=" -u root -b 0.0.0.0:10808"

防火墙配置

开放一个端口

1
firewall-cmd --zone=public --add-port=1080/tcp --permanent

重新加载防火墙规则并保存状态信息

1
firewall-cmd --reload

查看已经开放的端口

1
firewall-cmd --list-ports

浏览器使用socks5 代理不能设置用户名密码的问题

firefox浏览器安装FoxyProxy Standard 扩展

https://addons.mozilla.org/zh-CN/firefox/addon/foxyproxy-standard/


服务启动失败的问题

服务器启动失败时,查看服务状态

1
2
3
4
5
6
7
8
9
10
# service ss5 status
● ss5.service - SYSV: This script takes care of starting and stopping ss5
Loaded: loaded (/etc/rc.d/init.d/ss5; bad; vendor preset: disabled)
Active: active (exited) since Mon 2018-05-28 16:51:10 CST; 1min 29s ago
Docs: man:systemd-sysv-generator(8)
Process: 32456 ExecStart=/etc/rc.d/init.d/ss5 start (code=exited, status=0/SUCCESS)

May 28 16:51:10 MyCloudServer ss5[32456]: [29B blob data]
May 28 16:51:10 MyCloudServer ss5[32456]: Can't create pid file /var/run/ss5/ss5.pid
May 28 16:51:10 MyCloudServer ss5[32456]: Can't unlink pid file /var/run/ss5/ss5.pid

发现不能创建pid文件,原因是父级目录没有创建好

创建一下即可:

1
mkdir /var/run/ss5/

1
yum install tor

如果yum中没有tor,请安装epel源:

1
2
3
4
5
6
7
8
yum install epel-release

#安装完成之后可以通过下面的命令查看
yum repolist


#可以看到多了一个
#Extra Packages for Enterprise Linux 7 - x86_64

修改配置文件:/etc/tor/torrc 指定服务绑定IP和端口:

1
SOCKSPort 0.0.0.0:9150

启动服务:

1
Systemctl start tor

检查上方配置文件中指定的端口是否正在监听:

1
netstat -an | grep 9150

检查防火墙设置,确保服务器能正常连接到VPS上的Tor服务端口。

https://www.torproject.org/download/download-unix.html.en

按照这个站点上的进行操作


系统:Ubuntu


1、先设置软件包存储库,然后才能获取Tor

2、弄清楚你的发行版的名字

1
2
3
4
5
$ lsb_release -c
Codename: precise

cat /etc/issue

3、先卸载之前安装的老版本
sudo apt-get remove package –purge 删除包,包括配置文件等

1
sudo apt-get remove tor --purge

4、系统比较老,先升级

1
2
3
apt-get dist-upgrade

do-release-upgrade

在/etc/apt/sources.list.d/下添加一个新文件

1
vi torproject.list

内容如下:

1
2
deb http://deb.torproject.org/torproject.org xenial main
deb-src http://deb.torproject.org/torproject.org xenial main

或者

1
2
deb http://deb.torproject.org/torproject.org trusty main
deb-src http://deb.torproject.org/torproject.org trusty main

然后通过在命令提示符处运行以下命令来添加用于签署软件包的gpg密钥:

1
2
gpg --keyserver keys.gnupg.net --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -

更新并安装

1
2
$ apt update
$ apt install tor

有可能会

1
2
3
W: 无法下载 http://deb.torproject.org/torproject.org/dists/xenial/InRelease  无法连接上 deb.torproject.org:80 (31.13.84.8),连接超时
W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。

我们提供了一个Debian软件包来帮助您保持我们的签名密钥。建议您使用它。安装它使用:

1
2
apt-get install deb.torproject.org-keyring

修改配置:/etc/tor/torrc

1
SOCKSPort 0.0.0.0:9150

重启服务:

1
2
service tor restart

确保以具有管理员权限的用户身份登录。

解压安装 Mysql 5.6

1. 下载Windows版本的压缩包

如:mysql-5.6.31-winx64.zip

2. 将文件解压缩到指定目录

如:C:\Program Files\MySQL\MySQL Server 5.6

3. 设置环境变量

将…/bin 添加到系统环境变量 path 中

4. 修改配置文件

默认的配置文件是../my-default.ini,重命名该文件或者自己建立一个my.ini文件
在其中修改或添加配置:

1
2
3
[mysqld] 
basedir=C:/Program Files/MySQL/MySQL Server 5.6
datadir=C:/Program Files/MySQL/MySQL Server 5.6/data

5. 安装windows服务

进入到bin目录中,输入 mysqld -install 安装服务

如果不进入bin目录,install能成功,服务能注册,但服务无法启动,提示找不到文件

install指令默认会按照如下顺序读取指定配置文件:

C:\Windows\my.ini
C:\Windows\my.cnf
C:\my.ini
C:\my.cnf
C:\Program Files\MySQL\MySQL Server 5.6\my.ini
C:\Program Files\MySQL\MySQL Server 5.6\my.cnf

1
2
3
4
5
C:\Users\Administrator>mysqld -install
Service successfully installed.

basedir = C:\Program Files\MySQL\mysql-5.6.31-winx64
datadir = C:\Program Files\MySQL\mysql-5.6.31-winx64\data

6. 初始数据目录

进入到bin目录中,输入 mysqld --initialize 初始化数据目录

(好像是可以不需要)

1
2
3
4
5
6
C:\Users\Administrator>mysqld --initialize
2016-11-16 16:54:03 0 [Warning] TIMESTAMP with implicit DEFAULT value is depreca
ted. Please use --explicit_defaults_for_timestamp server option (see documentati
on for more details).
2016-11-16 16:54:03 0 [Note] mysqld (mysqld 5.6.31) starting as process 2564 ...

7. 启动服务

1
2
3
4
net start mysql

# 停止服务用
net stop mysql

8. 修改密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 指定root用户登录否则没有权限

mysql -u root

# 切换到mysql数据库
use mysql;

# 默认是没有密码的
mysql> select Host,User,Password from user;
+-----------+------+----------+
| Host | User | Password |
+-----------+------+----------+
| localhost | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
+-----------+------+----------+
4 rows in set (0.00 sec)

# 修改密码
mysql> update mysql.user set password=password('root') where user='root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0

# 刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

# 再查看user表
mysql> select Host,User,Password from user;
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| 127.0.0.1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| ::1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| localhost | | |
+-----------+------+-------------------------------------------+
4 rows in set (0.00 sec)

## 可以用客户端工具进行测试

# 远程访问,Host为%
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root' with grant
option;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

# 再看多了一条记录
mysql> select Host,User,Password from user;
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| 127.0.0.1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| ::1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| localhost | | |
| % | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-----------+------+-------------------------------------------+
5 rows in set (0.00 sec)




解压安装 MySQL 5.7

1. 下载Mysql 5.7的ZIP包

地址:
https://dev.mysql.com/downloads/file/?id=478884
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.23-winx64.zip

2. 选择安装位置,解压缩

如解压到:D:\mysql\mysql-5.7.23-winx64

如果想在其他目录直接执行mysql命令,则需要将bin加入到环境变量

2. 创建my.ini文件

在安装目录(D:\mysql\mysql-5.7.23-winx64)创建my.ini文件,填入如下内容

纯文本文件,可以使用任何文本编辑器进行编辑

1
2
3
4
5
[mysqld]
# set basedir to your installation path
basedir=D:/mysql/mysql-5.7.23-winx64
# set datadir to the location of your data directory
datadir=D:/mysql/mysql-5.7.23-winx64/data

如果使用反斜杆需要两个

1
2
3
4
5
[mysqld]
# set basedir to your installation path
basedir=D:\\mysql\\mysql-5.7.23-winx64
# set datadir to the location of your data directory
datadir=D:\\mysql\\mysql-5.7.23-winx64\\data

3. 初始化数据目录

1
2
3
4
5
6
7
cd D:\mysql\mysql-5.7.23-winx64

D:\mysql\mysql-5.7.23-winx64>bin\mysqld --initialize --console

# 会生成临时密码
# [Note] A temporary password is generated for root@localhost: r!i*sp)-E9hA

4. 启动Mysql

1
2
3
4
5
6
7
8
9
10
11
D:\mysql\mysql-5.7.23-winx64\bin>mysqld.exe --console
......
......
......
2018-08-25T19:36:15.598206Z 0 [Note] InnoDB: Buffer pool(s) load completed at 180826 3:36:15
2018-08-25T19:36:15.599873Z 0 [Note] - '::' resolves to '::';
2018-08-25T19:36:15.604039Z 0 [Note] Server socket created on IP: '::'.
2018-08-25T19:36:15.693851Z 0 [Note] Event Scheduler: Loaded 0 events
2018-08-25T19:36:15.703020Z 0 [Note] mysqld.exe: ready for connections.
Version: '5.7.23' socket: '' port: 3306 MySQL Community Server (GPL)

这种方式启动直接 CTRL + C 停止即可

不加 –console 则输出信息在日志文件夹中

5. 进入mysql,并修改密码

1
2
3
4
5
6
7
8
9
cd bin
mysql -uroot -p
# 输入上面的临时密码

#进入mysql,修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

# 退出重新登录

6. 停止mysql

1
2
3
>mysqladmin.exe -uroot -p shutdown

#输入root密码

7. 作为Windows服务

需要想将bin目录加入到环境变量

没有进行测试,通过命令行方式启动更加可控

1
2
3
4
5
6
# 安装服务
bin\mysqld --install

# 删除服务
bin\mysqld --remove



关于登录和密码

Mysql 5.6

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 修改密码  
set password for 'root'@'localhost' =password('root');

# 设置远程登录
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;

# 创建新用户
create user 'hinge'@'%' identified by 'hinge';
grant all privileges on *.* to hinge@'%' identified by 'hinge';
flush privileges;

# 不指定时默认是%*
create user hinge identified by 'hinge';
grant all privileges on *.* to hinge identified by 'hinge';
flush privileges;


grant all privileges on *.* to hinge@'localhost' identified by 'hinge';
flush privileges;

# 刷新权限
flush privileges;

Mysql 5.7

在配置文件[mysqld]字段下增加skip-grant-tables 字段,用以忽略权限验证

使用mysql -u root -p 登录数据, 密码直接回车

修改[mysql]数据库,user表的authentication_string字段

1
2
update mysql.user set authentication_string=password('root') where user='root';  
flush privileges;



2020-11-12

这个时候的mysql5.7 小版本已经到了32 了

下载地址:
https://dev.mysql.com/downloads/mysql/5.7.html

缺少dll的问题

运行mysqld 时,系统提示“由于找不到MSVCR120.dll,无法继续执行代码。重新安装程序可能会解决此问题。”

官方说明:
https://support.microsoft.com/en-us/help/3179560/update-for-visual-c-2013-and-visual-c-redistributable-package
下载这个程序并执行:
http://download.microsoft.com/download/1/8/0/180FA2CE-506D-4032-AAD1-9D7636F85179/vcredist_x64.exe

系统版本

CentOS Linux 7 (Core)

1
2
 uname -a
Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

安装MySql的源到系统中

MySql 5.7

下载对应版本的源rpm文件

1
2
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

安装

1
2
3
4
5
6
sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm 
warning: mysql57-community-release-el7-11.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql57-community-release-el7-11 ################################# [100%]

默认是启动5.7版本的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community disabled
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - disabled
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community disabled
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - disabled
mysql-connectors-community/x86_64 MySQL Connectors Community enabled: 42
mysql-connectors-community-source MySQL Connectors Community - S disabled
mysql-tools-community/x86_64 MySQL Tools Community enabled: 51
mysql-tools-community-source MySQL Tools Community - Source disabled
mysql-tools-preview/x86_64 MySQL Tools Preview disabled
mysql-tools-preview-source MySQL Tools Preview - Source disabled
mysql55-community/x86_64 MySQL 5.5 Community Server disabled
mysql55-community-source MySQL 5.5 Community Server - S disabled
mysql56-community/x86_64 MySQL 5.6 Community Server disabled
mysql56-community-source MySQL 5.6 Community Server - S disabled
mysql57-community/x86_64 MySQL 5.7 Community Server enabled: 227
mysql57-community-source MySQL 5.7 Community Server - S disabled
mysql80-community/x86_64 MySQL 8.0 Community Server disabled
mysql80-community-source MySQL 8.0 Community Server - S disabled

安装MySQL

1
sudo yum install mysql-community-server

修改配置文件,调整数据文件存放目录

1
2
3
vi /etc/my.cnf

datadir=/data/mysql/datadir

创建对应的目录,调整权限

mkdir /data/mysql/datadir

chown mysql:mysql /data/mysql

启动报错

1
2
3
4
systemctl start mysqld.service

Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

日志文件中说是文件权限问题,但没看到是那个文件

调整一下/var/lib/mysql 目录

1
2
3
4
5
6
7
8
9
10
11
12
 ls -al
total 8
drwxr-x--x. 2 mysql mysql 17 Nov 7 16:27 .
drwxr-xr-x. 27 root root 4096 Nov 7 16:00 ..
-rw-------. 1 root root 1024 Nov 7 16:27 .rnd
[root@localhost mysql]# chown mysql:mysql -R /var/lib/mysql
[root@localhost mysql]# ls -al
total 8
drwxr-x--x. 2 mysql mysql 17 Nov 7 16:27 .
drwxr-xr-x. 27 root root 4096 Nov 7 16:00 ..
-rw-------. 1 mysql mysql 1024 Nov 7 16:27 .rnd

再启动还是报错

后来尝试了很多方法之后,把数据目录改回去才能启动

启动之后获取密码:

1
2
3
4
5
shell> sudo grep 'temporary password' /var/log/mysqld.log


2017-11-07T09:10:43.302284Z 1 [Note] A temporary password is generated for root@localhost: -u(qyyu>L2n3

通过临时密码登录并修改root密码

1
2
3
shell> mysql -uroot -p

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@666';

修改了配置后再次测试,还是不行

1
2
datadir=/data/mysql/datadir

修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。

再次启动可以了

设置Mysql远程访问

1
grant all privileges on *.* to 'root'@'%' identified by 'Root@666' with grant option;

使授权生效

1
2
flush privileges;

1
2
3
4
5
#关闭防火墙
systemctl stop firewalld.service

#关闭开机启动
systemctl disable firewalld.service

数据库导入导出

先在目标库中创建表

在目标机器上导出

1
2
mysqldump -udap -p -h192.168.1.215 dap > dap.sql

进入mysql

1
2
3
4
5
6
7
mysql -udap -p

#切换数据库
use dap;

#导入数据:
source /data/mysql/215/dap.sql

测试的时候发现部分表,比如user表,permission表等创建不了,换成root用户就好了

CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。

MySQL Yum Repository
https://dev.mysql.com/downloads/repo/yum/

1. 下载mysql的repo源

1
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

2. 安装mysql-community-release-el7-5.noarch.rpm包

1
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

安装这个包后,会获得两个mysql的yum repo源:

/etc/yum.repos.d/mysql-community.repo
/etc/yum.repos.d/mysql-community-source.repo

3. 安装mysql

1
sudo yum install mysql-server

根据步骤安装就可以了,不过安装完成后,没有密码,需要重置密码。

4. 启动

1
service mysqld start

5. 重置密码

重置密码前,首先要登录

1
mysql -u root

登录时有可能报这样的错:
ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘
原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:

1
sudo chown -R openscanner:openscanner /var/lib/mysql

然后,重启服务:

1
service mysqld restart

接下来登录重置密码:

1
2
3
4
$ mysql -u root
mysql > use mysql;
mysql > update user set password=password('root') where user='root';
mysql > exit;

设置Mysql远程访问

1
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;

使授权生效

1
flush privileges;

6. 开放3306端口

CentOS 7 默认已经不适用这个防火墙了!

1
sudo vim /etc/sysconfig/iptables

添加以下内容:

-A INPUT -p tcp -m state –state NEW -m tcp –dport 3306 -j ACCEPT

保存后重启防火墙:

1
sudo service iptables restart

7. 设置开机启动

1
2
3
4
5
chkconfig --list

systemctl status mysqld

systemctl is-enabled mysqld

https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

1. 将MySQL Yum存储库添加到系统的存储库列表中

A. 转到MySQL Yum存储库的下载页面,网址为 http://dev.mysql.com/downloads/repo/yum

B. 选择并下载您的平台的发行包。

C. 使用以下命令安装下载的发行包,并platform-and-version-specific-package-name 使用下载的软件包的名称进行替换 :

1
shell> sudo rpm -Uvh platform-and-version-specific-package-name.rpm

例如,对于n基于EL6的系统的版本,命令是:

1
shell> sudo rpm -Uvh mysql57-community-release-el6-n.noarch.rpm

注意
一旦您的系统上安装了发行包,yum update 命令(或dnf启用的系统的dnf升级)的任何系统级更新将自动升级系统上的MySQL软件包,并替换任何本机第三方软件包,如果Yum在MySQL Yum存储库中找到替换它们。有关详细信息,请参阅使用MySQL Yum存储库升级MySQL并 替换MySQL 的本机第三方分发。

2. 选择版本系列

使用MySQL Yum存储库时,默认情况下选择最新的MySQL版本的MySQL进行安装。如果这是你想要的,你可以跳到下一步, 使用Yum安装MySQL。

在MySQL Yum存储库(http://repo.mysql.com/yum/)中,MySQL社区服务器的不同版本系列托管在不同的子链接库中。默认情况下,最新的GA系列(目前为MySQL 5.7)的子功能启用,默认情况下禁用所有其他系列(例如,MySQL 5.6系列)的子修复。使用此命令查看MySQL Yum存储库中的所有子修补程序,并查看其中哪些启用或禁用(对于启用dnf的系统,请使用dnf在命令中 替换 yum):

1
shell> yum repolist all | grep mysql

要安装最新的GA系列的最新版本,不需要配置。要安装最新的GA系列以外的特定系列的最新版本,请禁用最新GA系列的子功能,并在运行安装命令之前启用特定系列的子功能。如果您的平台支持 yum-config-manager或dnf config-manager命令,您可以通过发出以下命令来执行此操作,这些命令禁用5.7系列的子链接,并启用5.6系列的子目录; 对于不启用dnf的平台:

1
2
shell> sudo yum-config-manager --disable mysql57-community
shell> sudo yum-config-manager --enable mysql56-community

对于启用dnf的平台:

1
2
shell> sudo dnf config-manager --disable mysql57-community
shell> sudo dnf config-manager --enable mysql56-community

除了使用yum-config-manager或 dnf config-manager命令外,还可以通过手动编辑/etc/yum.repos.d/mysql-community.repo 文件来选择一个系列 。这是一个典型的条目:文件中的subrepository发行系列:

1
2
3
4
5
6
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

找到要配置的子链接的条目,然后编辑该enabled选项。指定 enabled=0禁用子广告素材,或 enabled=1启用子广告素材。例如,要安装MySQL 5.6,请确保您具有 enabled=0以上用于MySQL 5.7的子功能表项,并具有enabled=15.6系列的条目:

1
2
3
4
5
6
7
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

您只能在任何时间启用一个版本系列的子链接。当启用了多个版本系时,Yum将使用最新的系列。

通过运行以下命令并检查其输出(对于启用dnf的系统,使用dnf在命令中替换yum), 验证是否已启用和禁用正确的子修补剂 :

1
shell> yum repolist enabled | grep mysql

3. 安装MySQL

通过以下命令安装MySQL(对于启用dnf的系统,用命令 dnf替换yum):

1
shell> sudo yum install mysql-community-server

这将安装MySQL服务器的包以及其他所需的包。

4. 启动MySQL服务器

使用以下命令启动MySQL服务器:

1
shell> sudo service mysqld start

对于基于EL7的平台,这是首选命令:

1
shell> sudo systemctl start mysqld.service

您可以使用以下命令检查MySQL服务器的状态:

1
shell> sudo service mysqld status

对于基于EL7的平台,这是首选命令:

1
shell> sudo systemctl status mysqld.service

MySQL服务器初始化(仅适用于MySQL 5.7):在服务器初始启动时,如果服务器的数据目录为空,则会发生以下情况:

  • 服务器已初始化。

  • SSL证书和密钥文件在数据目录中生成。

  • 该 validate_password插件安装并启用。

  • ‘root‘@’localhost’ 创建 超级用户帐户。超级用户的密码被设置并存储在错误日志文件中。要显示它,请使用以下命令:

    1
    shell> sudo grep 'temporary password' /var/log/mysqld.log

    通过使用生成的临时密码登录,尽快更改root密码,并为超级用户帐户设置自定义密码:

    1
    2
    shell> mysql -uroot -p
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

    注意
    MySQL的 validate_password 插件默认安装。这将要求密码至少包含一个大写字母,一个小写字母,一位数字和一个特殊字符,并且总密码长度至少为8个字符。


上面都是翻译的

下面才是操作的记录

因为想使用mysql的全文索引,需要5.7才支持,使用原来的数据文件进行升级,原来的是5.6.31


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
shell> uname -r
3.10.0-514.26.2.el7.x86_64


shell> wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm


shell> rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
警告:mysql57-community-release-el7-11.noarch.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql57-community-release-el7-11 ################################# [100%]


shell> yum list | grep mysql


shell> yum install mysql-community-server


shell> systemctl status mysqld
# 安装完成并没有启动


# 修改配置文件
shell> vi /etc/my.cnf

datadir=/data/mysql/datadir


#将之前的数据文件复制到新安装的机器上
shell> scp -r xxxx/xxx/ root@1.1.1.1:/data/xxx

#修改权限
shell> chown -R mysql:mysql mysql

#启动服务
shell> systemctl start mysqld

#查看服务
shell> systemctl status mysqld


#升级
shell> mysql_upgrade -u root -p
Enter password:
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv OK
mysql.db OK
......
hinge.user OK
hinge.user_profile OK
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.

#重启
shell> systemctl restart mysqld

0%