2018年1月

https://github.com/fatedier/frp

现在组成方案:二级域名(外网ip)+路由器(lede)+frp

一键脚本安装

https://github.com/fatedier/frp/issues/1058
https://github.com/clangcn/onekey-install-shell/tree/master/frps
https://github.com/MvsCode/frp-onekey

https://github.com/fatedier/frp/blob/master/README_zh.md

(服务器安装路径/usr/local/frps) 服务器配置文件frps.ini 如下:

# [common] is integral section
[common]
# A literal address or host name for IPv6 must be enclosed
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
bind_addr = 0.0.0.0
bind_port = 5443
# udp port used for kcp protocol, it can be same with 'bind_port'
# if not set, kcp is disabled in frps
kcp_bind_port = 5443
# if you want to configure or reload frps by dashboard, dashboard_port must be set
dashboard_port = 6443
# dashboard assets directory(only for debug mode)
dashboard_user = user
dashboard_pwd = mima
# assets_dir = ./static

# 设置域名(保证此域名可用)
subdomain_host = frp.domains.com

vhost_http_port = 81
vhost_https_port = 4433
# console or real logFile path like ./frps.log
log_file = ./frps.log
# debug, info, warn, error
log_level = info
log_max_days = 7
# privilege mode is the only supported mode since v0.10.0
privilege_token = tokenxxx
# only allow frpc to bind ports you list, if you set nothing, there won't be any limit
#privilege_allow_ports = 1-65535
# pool_count in each proxy will change to max_pool_count if they exceed the maximum value
max_pool_count = 50
# if tcp stream multiplexing is used, default is true
tcp_mux = true

以上配置的对应在路由器上OpenWrt R7.5.5 By Lean客户端 Global Setting如下:

Server:frp.domains.com
端口:5443
Privilege Token:tokenxxx 
HTTP穿透服务端口:81
HTTPS穿透服务端口:4433
服务注册间隔:50

上面服务器配置对应在路由器文件路径:/var/etc/frp(进SSH) frpc.conf

[common]
server_addr=frp.domains.com
server_port=5443
privilege_token=tokenxxx
log_level=info
log_max_days=3
protocol=tcp
log_file=/var/etc/frp/frpc.log
tcp_mux=true
login_fail_exit=false

[frp]
type=http
custom_domains=xx.domains.com
local_ip=192.168.1.1
local_port=80
use_encryption=true
use_compression=true

以上[frp]为一个frp服务列表type=http(https作者还没解决,有点问题,可以nginx代理即可)

frp https 服务

访问web

web frp控制台

根据服务器配置信息如下:

dashboard_port = 6443
dashboard_user = user
dashboard_pwd = mima

即是frp.domains.com:6443 账号user密码mima,进入web控制台

https处理:

frp.domains.com.conf配置文件上设置代理:

map $http_x_forwarded_for $clientRealip {
   "" $remote_addr;
   ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;
}
server {
  listen 80;
  listen 443 ssl http2;
...
location / {
           proxy_pass http://127.0.0.1:6443;  #此处的6443就是你安装frp时设置的dashboard_port端口
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $clientRealip;  # $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
...

即可使用https://frp.domains.com访问

外网访问内网

根据配置信息如下
服务器上配置信息

...
vhost_http_port = 81
...

客户端配置信息

[frp]
    type=http
    custom_domains=xx.domains.com
    local_ip=192.168.1.1
    local_port=80
    use_encryption=true
    use_compression=true

这里使用的是http,因为作者似乎还没解决https 502问题
http访问:xx.domains.com:81即可

https处理:

xx.domains.com.conf配置文件上设置代理:

map $http_x_forwarded_for $clientRealip {
   "" $remote_addr;
   ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;
}
server {
  listen 80;
  listen 443 ssl http2;
...
  location / {
           proxy_pass http://127.0.0.1:81;  #此处的,81(4433)就是你安装frp时设置的vhost_http(s)_port端口
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $clientRealip;  # $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
...

即可使用https://xx.domains.com访问192.168.1.1

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
使用内网穿透工具frp
做了简单的完善和补充
FRP内网穿透工具

free frp

https://www.chuantou.org/
https://diannaobos.com/frp/
http://frp.xxorg.com/

服务器设置

[frpc穿透] 【填坑完毕】内网穿透利器Frp一键安装脚本及设置教程
一键安装onekey-install-shell
下载

wget https://github.com/fatedier/frp/releases/download/v0.16.0/frp_0.16.0_linux_386.tar.gz

解压

tar zxvf frp_0.16.0_linux_386.tar.gz

重命名

 mv frp_0.16.0_linux_386 frps

设置frps守护脚本

cd frps

vi start_frps.sh

#!/bin/sh
check(){
    pidof frpc  > /dev/null 2>&1
    if [ $? -ne 0 ]; then
          /etc/frpc/frpc -c /etc/frpc/frpc.ini &  
        fi
}
while true
      do 
      sleep 1
      check 
      done

赋予权限

chmod +x frps frps.ini frps.log start_frps.sh

在/etc/rc.local文件的exit 0前加入下面两行代码

/etc/frpc/frpc -c /etc/frpc/frpc.ini &
/etc/frpc/start_frpc.sh &

Https 代理模式对证书的处理可能有问题未解决
frp端口映射穿透内网
[frpc穿透] 【已解决】求助,frpc穿透https无法使用
FRP客户端和服务端在CentOS7中设置开机启动
有办法让 frp 和 nginx 共存一起用 80 端口吗?
Frp内网穿透配置
【分享】通过frp自建远程桌面连接,彻底告别TeamViewer && 来自此处 1

frp 与 K3

VPS

https://github.com/MvsCode/frps-onekey

/usr/local/frps

/usr/local/frps/frps.ini

# [common] is integral section
[common]
# A literal address or host name for IPv6 must be enclosed
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
bind_addr = 0.0.0.0
bind_port = 5443
# udp port used for kcp protocol, it can be same with 'bind_port'
# if not set, kcp is disabled in frps
kcp_bind_port = 5443
# if you want to configure or reload frps by dashboard, dashboard_port must be set
dashboard_port = 6443
# dashboard assets directory(only for debug mode)
dashboard_user = user
dashboard_pwd = pass
# assets_dir = ./static
vhost_http_port = 81
vhost_https_port = 4433
# console or real logFile path like ./frps.log
log_file = ./frps.log
# debug, info, warn, error
log_level = info
log_max_days = 3
# auth token
token = vpstoken
# It is convenient to use subdomain configure for http、https type when many people use one frps server together.
subdomain_host = xx.xx.com
# only allow frpc to bind ports you list, if you set nothing, there won't be any limit
#allow_ports = 1-65535
# pool_count in each proxy will change to max_pool_count if they exceed the maximum value
max_pool_count = 50
# if tcp stream multiplexing is used, default is true
tcp_mux = true

Usage: /etc/init.d/frps {start|stop|restart|status|config|version}

/etc/sysconfig/iptables:

# Generated by iptables-save v1.4.21 on Mon Apr 22 12:00:12 2019
*filter
:INPUT DROP [2:80]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [83:21224]
:syn-flood - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 81 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4433 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6443 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
COMMIT
# Completed on Mon Apr 22 12:00:12 2019

/usr/local/nginx/conf/vhost/xx.conf

map $http_x_forwarded_for $clientRealip {
   "" $remote_addr;
   ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;
}
server {
  listen 80;
  listen 443 ssl http2;
  ssl_certificate /usr/local/nginx/conf/ssl/xx.xx.com.crt;
  ssl_certificate_key /usr/local/nginx/conf/ssl/xx.xx.com.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  ssl_prefer_server_ciphers on;
  ssl_session_timeout 10m;
  ssl_session_cache builtin:1000 shared:SSL:10m;
  ssl_buffer_size 1400;
  add_header Strict-Transport-Security max-age=15768000;
  ssl_stapling on;
  ssl_stapling_verify on;
  server_name xx.xx.com;
  access_log /data/wwwlogs/xx.xx.com_nginx.log combined;
  index index.html index.htm index.php;
  root /data/wwwroot/xx.x.cxom;
  if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
  
  include /usr/local/nginx/conf/rewrite/other.conf;
  #error_page 404 /404.html;
  #error_page 502 /502.html;
  location / {
    proxy_pass http://127.0.0.1:81;  #此处的6443就是你安装frp时设置的dashboard_port端口
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $clientRealip;  # $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
# location ~ .*\.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv|mp4)$ {
#   valid_referers none blocked *.xx.com x.xxx.com;
#   if ($invalid_referer) {
#       return 403;
#   }
# }
  location ~ [^/]\.php(/|$) {
    #fastcgi_pass remote_php_ip:9000;
    fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
  }

# location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
#   expires 30d;
#   access_log off;
# }
# location ~ .*\.(js|css)?$ {
#   expires 7d;
#   access_log off;
# }
  location ~ /\.ht {
    deny all;
  }
}

K3

远程管理,远程端口:81, 允许IP:255.255.255.255

FRP设置:

#frp.jsxz.cf是免费提供的frp服务器,如果需要使用,请修改下面两处的“test”为你的名称,比如"hello"
#然后可以通过http://hello.jsxz.cf访问你的设备
#如果无法正常使用,请更改名称,注意名称不能和别人重复
[common]
server_addr = xx.xx.com
server_port = 5443
token = vpstoken
user = user

[web]
type = http
local_port = 80
subdomain = home
#端口转发示例,去除下面每行前面的"#"并修改remote_port,注意remote_port不能和别人重复,否则无法正常启用
#[ssh]
#type = tcp
#local_ip = 127.0.0.1
#local_port = 22
#remote_port = 6000


[frp]
type=http
custom_domains=xx.xx.com
local_ip=192.168.2.1
local_port=80
use_encryption=true
use_compression=true


end

根据机器型号查询配置:http://support.lenovo.com/us/en/products/search
通过机器序列号查询保修期:http://support.lenovo.com/us/en/warrantylookup
通过机器序列号查询FRU部件码:http://support.lenovo.com/us/en/ibasepartslookup
专门网查询:http://forum.51nb.com/report.php?action=getdetails

http://www.tpuser.com.tw
http://www.tpuser.idv.tw/wp/ TP非官方情報站

Thinkpad 下载

https://think.lenovo.com.cn/support/driver/mainpage.aspx#ThinkPad
下载

https://forum.51nb.com/forum.php?mod=redirect&goto=findpost&ptid=2016970&pid=34511522
电池重置

ThinkPad论坛

https://forum.51nb.com/forum.php

键盘

【原创】外接式指点杆键盘大收集——指点云间数点红
TEX Kodachi 小红点机械键盘

DIY 套件

【原创】发布THINKPAD键盘改无线套件 && xy3dg12的小店
QQ 群 :424031784(DIY Thinkpad键盘)
X6的键盘比X2XX的好多了
8855 X220
X220 和T420 的键盘布局真的很合理,
我的T430是6行的,没有了FN+F2关屏幕的功能,对T430 最不懑就是这个了

https://forum.51nb.com/forum.php?mod=viewthread&tid=1981287&mobile=2
8855驱动

X220键盘有啥好的……
奇光产的脆货~
T4x、T6x时代的NMB键盘(老IBM风格)才好

x61的nmb键盘绝对值得拥有一块。码字手感一流

笔记本

51nb X210评测:努力复刻ThinkPad

https://tao.hooos.com/goods_576071887840.html
thinkpad键盘说明

蓝牙键盘驱动:
https://download.lenovo.com/ibmdl/pub/pc/pccbbs/options/tp_compact_keyboard_1491.exe

有线键盘驱动:
https://download.lenovo.com/pccbbs/options/tp_compact_keyboard_1491.exe

有线/蓝牙无线使用说明书:
https://download.lenovo.com/pccbbs/options/0b58442_tp_compact_usb_bt_kb_zh_cn.pdf

KU-1255
KT-1255驱动

X1 Tablet 键盘驱动

https://think.lenovo.com.cn/support/driver/newdriversdownlist.aspx?categoryid=12414

联想(ThinkPad)驱动下载教程:

  • 打开联想服务网址:https://newsupport.lenovo.com.cn/ ,搜索:t570,选择:ThinkPad T570。
  • 在新打开的页面中,点击:驱动下载
  • 展开 热键 ,显示:Hotkey热键驱动程序(Windows 10 64-bit),下载并安装。文件名:SIhotkey-r0yvu35w.exe

第三方

http://www.wooyun.org/
镜像
https://bestwing.me/build-the-wooyun-drops.html 搭建教程
https://github.com/hanc00l/wooyun_public
https://github.com/m0l1ce/wooyunallbugs
https://github.com/jiji262/wooyun_articles
https://github.com/SuperKieran/WooyunDrops

http://wooyun.fbisb.com/
http://su.xmd5.org/
http://wooyun.jozxing.cc/

http://www.virscan.org/language/zh-cn/
VirSCAN.org 是一个非盈利性的免费为广大网友服务的网站,它通过多种不同厂家提供的最新版本的病毒检测引擎对您上传的可疑文件进行在线扫描,并可以立刻将检测结果显示出来,从而提供给您可疑程度的建议。

博客

https://bazad.github.io/

常见 Web 安全攻防总结
Web安全开发规范手册V1.0

前端安全

前端该知道些密码学和安全上的事儿
前端 web 密码加密是否有意义
目前有没有用密码登录的网站做了前端加盐加密?

一个想法:
某些库,插件会重写浏览器的XMLHttpRequest对象,
在Network看不到任何请求,拦截所有的请求,只能本地调试。
这样相对安全,为难自己。

最近一次wordpress主题开发中需要对现有用户角色功能的补充,顺带记录笔记。

注册用户角色

add_role('site_developer', '客户', array(
    'read' => true,  //文章阅读权限
    'moderate_comments' => true, //编辑、删除、修改评论权限
    'edit_posts' => false //编辑文章权限
));

角色API参考http://codex.wordpress.org/Roles_and_Capabilities
更多权限参考列表如下:

read 阅读文章
moderate_comments 管理评论
delete_posts 删除文章
edit_posts 编辑文章
delete_published_posts 删除已发布文章
publish_posts 发布文章
upload_files 上传文件
edit_published_posts 编辑已发布文章
read_private_pages 阅读私有页面
edit_private_pages 编辑私有页面
delete_private_pages 删除私有页面
read_private_posts 阅读私有文章
edit_private_posts 编辑私有文章
delete_private_posts 删除私有文章
delete_users 删除用户
edit_users 编辑用户
edit_themes 编辑主题
edit_plugins 编辑插件

添加/增加用户字段

 /*
 * 自定义用户个人资料信息
 */
add_filter( 'user_contactmethods', 'func_add_contact_fields' );
function func_add_contact_fields( $contactmethods ) {
    $contactmethods['qq'] = 'QQ';
    $contactmethods['qm_mailme'] = 'QQ邮箱“邮我”';
    $contactmethods['qq_weibo'] = '腾讯微博';
    $contactmethods['sina_weibo'] = '新浪微博';
    $contactmethods['twitter'] = 'Twitter';
    $contactmethods['google_plus'] = 'Google+';
    $contactmethods['donate'] = '赞助链接';
    unset( $contactmethods['yim'] );
    unset( $contactmethods['aim'] );
    unset( $contactmethods['jabber'] );
    return $contactmethods;
}

提供一份wordpress主题开发中的优化项目,经过许多版本迭代的最优体验。

随着wordprss功能的越来越完善,同时也越来越臃肿,有必要进行响应的优化工作,特别是对于做企业网站开发而言。

清除控制台不必要功能

add_action('wp_dashboard_setup', 'example_remove_dashboard_widgets' );
function example_remove_dashboard_widgets() {
    // 控制面板优化
    global $wp_meta_boxes;
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']); // 删除 "快速发布" 模块
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']); // 删除 "引入链接" 模块
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']); // 删除 "近期评论" 模块
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);  // 删除 "近期草稿" 模块
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);  // 删除 "WordPress 开发日志" 模块
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);  // 删除 "其它 WordPress 新闻" 模块
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); // 删除 "概况" 模块
}
//移除不必要后台菜单选项
add_action( 'admin_menu', 'wpjam_remove_admin_menus' );
function wpjam_remove_admin_menus(){
    remove_menu_page( 'index.php' );                  //移除“仪表盘”-隐藏版本更新提示
    remove_menu_page( 'edit-comments.php' );          //移除“评论”
    //remove_menu_page( 'plugins.php' );              //移除"插件"
    remove_menu_page( 'tools.php' );                  //移除"工具"
    remove_submenu_page( 'options-general.php', 'options-writing.php' );    //移除二级菜单:“设置”——“撰写”
    // remove_submenu_page( 'options-general.php', 'options-discussion.php' ); //移除二级菜单:“设置”——“讨论”
    // remove_submenu_page( 'options-general.php', 'options-media.php' );      //移除二级菜单:“设置”——“多媒体”
}

remove_action('admin_init', '_maybe_update_themes');
add_filter('pre_site_transient_update_themes',  create_function('$a', "return null;"));//禁用主题更新
remove_action( 'load-update-core.php', 'wp_update_plugins' );
add_filter( 'pre_site_transient_update_plugins', create_function( '$a', "return null;" ) );//禁用插件更新
remove_action('admin_init', '_maybe_update_core');
add_filter('pre_site_transient_update_core',    create_function('$a', "return null;")); //禁用版本更新

移除不必要的选项

// Remove Actions
remove_action('wp_head', 'feed_links_extra', 3); // feeds链接
remove_action('wp_head', 'feed_links', 2); 
remove_action('wp_head', 'rsd_link'); //移除head中的rel="EditURI"
remove_action('wp_head', 'wlwmanifest_link'); //移除head中的rel="wlwmanifest"
remove_action('wp_head', 'index_rel_link'); // 
remove_action('wp_head', 'parent_post_rel_link', 10, 0); // Prev link
remove_action('wp_head', 'start_post_rel_link', 10, 0); // Start link
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0); //
remove_action('wp_head', 'wp_generator'); //禁止在head泄露wordpress版本号
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
remove_action('wp_head', 'rel_canonical');
remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);


https://nodejs.org/dist/

《Node.js 调试指南》

@ruanyf
Chrome 浏览器允许将任意 HTTP 请求,转成 curl 命令的形式,从而在命令行发出这个请求。
这里还有一个小工具,可以将 curl 请求转成 Node 脚本。https://curl.trillworks.com/#node

版本号

使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。

语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。

如果只是修复bug,需要更新Z位。
如果是新增了功能,但是向下兼容,需要更新Y位。
如果有大变动,向下不兼容,需要更新X位。
版本号有了这个保证后,在申明第三方包依赖时,除了可依赖于一个固定版本号外,还可依赖于某个范围的版本号。例如"argv": "0.0.x"表示依赖于0.0.x系列的最新版argv。

NPM支持的所有版本号范围指定方式可以查看官方文档
Node 调试工具入门教程

node的http服务器

var http = require('http');
var fs = require('fs');
var documentRoot = 'D:/20180626/code'; //设置文件的根目录,可以修改为个人的自定义目录。
var server = http.createServer(function(req,res) {
    var url = req.url;
    var file = documentRoot + url;
    console.log(url);
    fs.readFile(file,function(err,data) {
        if(err){
            res.writeHeader(404,{
                'content-type':'text/html;charset="utf-8"'
            });
            res.write('<h1>404错误</h1><p>你要找的页面不存在</p>');
            res.end();
        }else{
            res.writeHeader(200,{
                'content-type':'text/html;charset=utf-8"'
            });
            res.write(data);
            res.end();
        }
    });
}).listen(8888);//设置的端口号,建议为6000以上。
console.log('服务器开启成功');

http://phpstudy.php.cn/
php5.6+Redis+Windows7安装 (phpstudy)
详解PhpStudy集成环境升级MySQL数据库版本
上面的教材安装前

mysql服务是你自己想要升级mysql服务生成的(前提是你按照了百度上所说的在你想要升级的mysql文件中使用了mysql
-install 等命令,在此还要强调一点,在这个之前,你原来的Mysql文件中你还要执行mysqld -remove!有同学会问了,这是为什么?因为啊。phpstudy是一个集成软件,你装好后,apache + mysql + php都是一起装好的,而Mysqla 就是phpstudy帮你注册的服务,所以你要删了。)

那说道这边,有些同学会问了,那说了这么久,你还是没说为什么phpstudy会起不来mysqlde
服务。其实说到这边,我已经说的很明确了。mysqla既然是phpstudy帮你注册的服务,那你自己mysqld
-install的注册的服务是mysql。那只要,在服务列表中让phpstudy生成一个mysqla的服务就行了啊!哈哈哈,聪明,那怎么做?emmmmmmm,无法截图。。。我直接说吧,打开phpstudy找到服务管理-->mysql-->安装服务!好了!这时候,就是你的时间了。link
start~

然后安装完后,搜索cmd(因为这样才能以管理员身份运行),
以管理员身份运行,标题显示为“选择管理员:命令提示符”
输入大写D: 进入D盘

C:\WINDOWS\system32>D:

D:\>cd phpStudy/PHPTutorial/MySQL

D:\phpStudy\PHPTutorial\MySQL>cd bin

> mysqld --initialize
> mysqld -install

D:\phpStudy\PHPTutorial\MySQL\bin>mysqld --initialzie
2018-06-10 23:28:58 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-06-10 23:28:58 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2018-06-10 23:28:58 0 [Note] mysqld (mysqld 5.6.40) starting as process 7768 ...

D:\phpStudy\PHPTutorial\MySQL\bin>mysqld --install
Service successfully installed.

D:\phpStudy\PHPTutorial\MySQL\bin>

安装好phpstudy后,升级了MySQL后,通过phpstudy启动,Apache可以启动,Mysql无法启动。
解决方法:
之前已经装过Mysql,要把系统服务里面的MySQL删除,留下MySQLa服务。
同样以管理员身份运行cmd命令行下输入:sc delete mysql 即可删除。
重启即可。

phpStudy本地环境测试,打开网页很慢的解决办法!