Author Archives: Node

SQL server 无法删除用户对象架构解决方案

sql语句;

方法一;适用于SQL server 2000/2005/2008R2

use usernamedb
 go

declare tb cursor local
 for
 select 'sp_changeobjectowner '
 +quotename(
 +quotename(user_name(uid))
 +'.'+quotename(name),'''')
 +',''dbo'''
 from sysobjects
 where objectproperty(id,N'isusertable')=1
 and uid<>user_id('dbo')
 declare @s nvarchar(4000)
 open tb
 fetch tb into @s
 while @@fetch_status=0
 begin
 exec(@s)
 fetch tb into @s
 end
 close tb
 deallocate tb

方法二;适用于SQL server 2005/2008R2

ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo;

数据库-安全性-架构,先删除对应用户架构再删除用户。

方法三;适用于SQL server 2000

开始-程序-Microsoft SQL Server-企业管理器打开-点击本地服器-右击属性-服务器设置-允许对系统目录直接进行修改-确定-数据库-master-sysusers-右击-打开表-返回所有行-找到要删除的用户删除即可,通常在最后一行。

其他版本没尝试,你可以试试。如果有好的解决方案,可以留言,我好补充加上。

Linux MariaDB(MySQL)10.2 数据库基于GTID主从同步复制安装配置

原创作品,转载请注明本文地址

操作系统:CentOS Linux release 7.3.1611 (Core)
数据库:MariaDB-10.2.6-linux-glibc_214-x86_64

主服务器:10.10.10.56
从服务器:10.10.10.163

1.今天要做的事,单向主从同步

关于MariaDB(MySQL)数据库安装请参阅《Centos7.3 x64位二进制安装(MySQL)MariaDB 10.1.20数据库之生产篇》下面就开始MariaDB(MySQL)服务器集群的配置过程。

2.在MariaDB(MySQL)配置文件中修改或添加以下信息

vim /etc/my.cnf

主从通用配置

binlog-format = mixed #二进制日志记录的模式(高版本默认开启)
binlog-checksum = CRC32 #可使主机为写入二进制日志的事件写入校验(高版本默认开启)
sync-master-info = 1 #MariaDB依靠操作系统将master.info文件刷新到磁盘。
sync_relay_log_info = 1 #MariaDB依靠操作系统将relay-log.info文件刷新到磁盘。
expire_logs_days = 7 #日志文件过期天数,默认是 0,表示不过期 
master-verify-checksum = 1 #主服务器效验
slave-sql-verify-checksum = 1 #从服务器效验

3.主服务器Master除了通用配置外,还需要加入以下代码

server-id = 56 #MySQL服务器ID,不重复
log-bin = mysql-bin #二进制日志(默认开启)
sync-binlog = 1 #主服务器进行设置,用于事务安全
log-bin-index = mysql-bin

4.从服务器Slave除了通用配置外,还需要加入以下代码

server-id = 163
relay-log = relay-bin #中继日志
slave-parallel-threads = 2 #设定从服务器的SQL线程数
#replicate-do-db = renwoleblogdb#复制指定的数据库,多个写多行
replicate-ignore-db = mysql #不备份的数据库,多个写多行
relay_log_recovery = 1 #从站崩溃后可以使用,防止损坏的中继日志处理。
log-slave-updates = 1 #slave将复制事件写进自己的二进制日志
relay-log-index = relay-bin

此外Mysql从服务器没有必要开启二进制日志,但是在一些情况下,必须设置,例如;如果slave为其它slave的master,必须设置bin_log。我这里就默认开启。

5.以上只是简单的介绍了每个参数的作用,这些参数的具体设置还需根据用户的实际情况进行相关调整,具体可到官方了解

《复制和二进制日志服务器系统变量》
//mariadb.com/kb/en/mariadb/replication-and-binary-log-server-system-variables/

关于系统变量的兼容性,可参阅官方

《MariaDB与MySQL兼容性》
//mariadb.com/kb/en/mariadb/mariadb-vs-mysql-compatibility/

6.主服务器Master授权配置

主MariaDB服务器上创建专用账号并授权数据库权限,以及从服务器IP的远程访问

# mysql -uroot -p
Enter password:【输入你的MySQL密码回车】
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'renwoleuseracc'@'%' IDENTIFIED BY 'renwoleuserpass'; //创建Slave专用备份账号
MariaDB [(none)]> flush privileges; //刷新MySQL权限
MariaDB [(none)]> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; //查看授权情况
MariaDB [(none)]> flush tables with read lock; //锁定数据库防止master值变化
MariaDB [(none)]> show master status; //获取master状态值
+-----------------+----------+------------+-----------------+
| File |Position |Binlog_Do_DB|Binlog_Ignore_DB |
+-----------------+----------+------------+-----------------+
| mysql-bin.000006| 627 | | |
+-----------------+----------+------------+-----------------+
1 row in set (0.00 sec)

7.一旦获取了备份时正确的Binlog位点(文件名和偏移量),那么就可以用BINLOG_GTID_POS()函数来计算GTID

MariaDB [(none)]> SELECT BINLOG_GTID_POS("mysql-bin.000006", 627);
+------------------------------------------+
| BINLOG_GTID_POS('mysql-bin.000006', 627) |
+------------------------------------------+
| 0-56-4 |
+------------------------------------------+
1 row in set (0.01 sec)

8.从服务器Slave配置

正如官方所说从MariaDB 10.0.13版本开始,mysqldump会自动完成这个工作,并且把GTID的写在导出文件中,只要设置 –master-data 或 –dump-slave 的同时设置 –gtid 即可。

这样的话新的SLAVE就可以通过设置 @@gtid_slave_pos 的值来设定复制的起始位置,用 CHANGE MASTER 把这个值传给主库,然后开始复制:

# mysql -uroot -p
Enter password:【输入你的MySQL密码】
MariaDB [(none)]> SET GLOBAL gtid_slave_pos = "0-56-4";
MariaDB [(none)]> change master to master_host='10.10.10.56',MASTER_PORT = 3306,master_user='renwoleuseracc',master_password='renwoleuserpass',master_use_gtid=slave_pos; //进行主从授权
MariaDB [(none)]> START SLAVE; //启动Slave
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
 Slave_IO_State: Waiting for master to send event
 Master_Host: 10.10.10.56
 Master_User: renwoleuseracc
 Master_Port: 3306
 Connect_Retry: 60
 Master_Log_File: mysql-bin.000006
 Read_Master_Log_Pos: 627
 Relay_Log_File: relay.000035
 Relay_Log_Pos: 537
 Relay_Master_Log_File: mysql-bin.000006
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
 ...
 ...
 ...
 Using_Gtid: Slave_pos
 Gtid_IO_Pos: 0-56-4

9.如果 Slave_IO_Running 与 Slave_SQL_Running 都为YES,表明从服务已经运行,Using_Gtid列判断GTID值是否一致。
说明:

master_host 表示master授权地址
MASTER_PORT MySQL端口
master_user 表示master授权账号
master_password 表示密码
master_use_gtid GTID变量值

10.接下来解锁主服务器数据库表

MariaDB [(none)]> unlock tables; //解锁数据表
MariaDB [(none)]> show slave hosts; //查看从服务器连接状态
MariaDB [(none)]> show global status like "rpl%"; //查看客户端

11.从服务器Slave查看relay的所有相关参数

MariaDB [(none)]> show variables like '%relay%';

12.主从已经配置完成。现在无论在主服务器上增、改、删、查,都会同步到从服务器,根据自己的需求进行相关测试即可。
关于master slave重置语法

重置master的核心语法

RESET MASTER; 意思是执行 RESET MASTER 将删除所有二进制日志文件,并创建一个空白的二进制日志文件,数字后缀为.000001,RESET MASTER 不会影响SLAVE服务器上的工作状态,所以执行这个命令会导致Slave找不到Master的binlog,从而造成同步失败。

重置slave的核心语法

RESET SLAVE; 含义是;RESET SLAVE 将清除slave上的同步位置并删除所有旧的同步中继日志文件,但重置前必须先停止slave服务(STOP SLAVE)

以后有时间,我将介绍基于GTID的半同步主从的文章,这也是在生产中所需要记录下来,以备以后使用。

更多介绍://mysql.taobao.org/monthly/2016/02/08/

推荐:DiskGenius Pro 4.7.2 64 专业绿色大文件恢复版

该软件经过详细测试,可以恢复单个文件大小100G以上(测试文件格式类型VHDX),有些版本只能恢复1G大小的文件,所以把好东西分享给大家,DiskGenius Pro软件包经过360杀毒和云查杀没有出现病毒等问题,如果不放心,可以使用专业web版扫描,地址://virscan.org/。此软件只能在windows下运行包含32&64位。

如有涉嫌侵权或违法违规内容,请在下方留言,以便我们及时处理。

linux Centos7平滑无缝升级PHP7.1.0到PHP 7.1.5新版本

我是一个比较喜欢爱好新技术的人,一旦有新的东西出现或发行,我都会拿来研究,最终用于生产中。新的东西有利有弊,PHP新版本有很多特性,同样也存在未知的BUG,所以无论是拿来学习,还是用于生产都要谨慎。不过话说回来既然发布了稳定版就不妨一试呗。

实验环境:CentOS Linux release 7.3.1611 (Core)
内核版本:Linux version 3.10.0-514.el7.x86_64

1.查看php版本有两种方法,显示结果相同。

第一种

# /usr/local/php/bin/php -v

第二种

# php  -v

PHP 7.1.0 (cli) (built: Dec 17 2016 17:00:32) ( ZTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.1.0, Copyright (c) 1999-2016, by Zend Technologies

2.升级前需要找到之前的configure配置模块信息,做到升级前后是一致,否则可能会影响网站正常访问,若不记得之前的configure信息,可以写个phpinfo探针查找即可,或者使用以下命令;

# php -i | grep configure

Configure Command => './configure' '--prefix=/usr/local/php' '--with-config-file-path=/usr/local/php/etc' '--with-fpm-user=www' '--with-fpm-group=www' '--with-iconv-dir' '--with-freetype-dir' '--with-jpeg-dir' '--with-png-dir' '--with-zlib' '--with-libxml-dir' '--enable-xml' '--disable-rpath' '--enable-bcmath' '--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--with-curl' '--enable-mbregex' '--enable-fpm' '--enable-mbstring' '--with-mcrypt' '--with-gd' '--enable-gd-jis-conv' '--enable-gd-native-ttf' '--with-openssl' '--with-mhash' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--enable-opcache' '--with-libmbfl' '--with-onig' '--enable-pdo' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-pdo-mysql' '--enable-mysqlnd-compression-support' '--with-pear' '--enable-maintainer-zts' '--enable-session' '--with-gettext'

以上信息稍作修改后,即可安装配置使用。

3.重要:先备份老版本php,以备升级失败后快速回滚

 # mv /usr/local/php /usr/local/php7.1.bak
 # mkdir /renwole
 # cd /renwole
 # wget //am1.php.net/distributions/php-7.1.5.tar.gz
 # tar zxvf php-7.1.5.tar.gz
 # cd php-7.1.5
 # ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-fpm-user=www --with-fpm-group=www --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-jis-conv --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-opcache --with-libmbfl --with-onig --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pdo-mysql --enable-mysqlnd-compression-support --with-pear --enable-maintainer-zts --enable-session --with-gettext

PHP编译完成后,你会看到 “Thank you for using PHP.” 字样,表示编译完成,执行以下安装命令;

# make && make install

这个过程有些慢,但不影响你的网站正常访问,耐心等待…

4.php完成升级安装配置后,开始拷贝php配置文件

# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# cp /renwole/php-7.1.5/php.ini-development /usr/local/php/etc/php.ini
# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

或者沿用老版php配置文件(如果PHP版本跨度不大,建议使用老版本php.ini,否则php配置文件中的很多东西需要重新配置),\cp -rf表示覆盖无提示

# \cp -rf /usr/local/php7.1.0.bak/etc/php-fpm.conf /usr/local/php/etc/php-fpm.conf
# \cp -rf /usr/local/php7.1.0.bak/etc/php.ini /usr/local/php/etc/php.ini
# \cp -rf /usr/local/php7.1.0.bak/etc/php-fpm.d/www.conf /usr/local/php/etc/php-fpm.d/www.conf

5.现在重启php-fpm

# systemctl restart php-fpm.server

6.再次查看php版本

# /usr/local/php/bin/php -v

PHP 7.1.5 (cli) (built: May 11 2017 16:18:43) ( ZTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.1.5, Copyright (c) 1999-2017, by Zend Technologies

打印出来的PHP版本信息显示;已经成功从PHP 7.1.0平滑无缝升级为PHP 7.1.5

Linux Nginx网站:Certbot安装配置Lets Encrypt SSL免费HTTPS加密证书

实验环境:CentOS Linux release 7.3.1611 (Core)
内核版本:Linux version 3.10.0-514.el7.x86_64
Nginx版本: Nginx-1.13.0

Let’s Encrypt是一个免费的、自动化、开放的证书颁发机构。由Mozilla、Cisco、Chrome、facebook、Akamai等众多公司和机构发起的,其安全稳定及其可靠。具体信息可以去letsencrypt官方网站了解详情。

今天我们就充分利用Lets Encrypt让你的网站实现https加密。

官网://letsencrypt.org/

1.安装certbot及源扩展包

$ yum install -y epel-release

Certbot是Let’s Encrypt官方指定推荐的客户端。通过 Certbot,你可以自动化部署 Let’s Encrypt SSL证书,以便为网站加上HTTPS加密支持。

$ yum install certbot
$ certbot certonly
Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?
//你是希望如何使用ACME CA进行身份验证?
-------------------------------------------------------------------------------
1: Place files in webroot directory (webroot)
//将文件放在webroot目录
2: Spin up a temporary webserver (standalone)
//使用临时Web服务器(独立目录)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):1 【选择1回车】
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):su@renwole.com【输入您的邮箱地址,用于紧急更新和安全通知】

Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
-------------------------------------------------------------------------------
Please read the Terms of Service at
//letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
//acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A【选择A回车同意服务条款,C为拒绝】
-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o:Y【您是否愿意分享您的电子邮件地址,建议选择Y回车】
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c'
to cancel): blog.renwole.com【输入域名回车】
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for blog.renwole.com
Select the webroot for blog.renwole.com:
-------------------------------------------------------------------------------
1: Enter a new webroot
//输入网站绝对路径
-------------------------------------------------------------------------------
Press 1 [enter] to confirm the selection (press 'c' to cancel):1【选择数字1回车】
Input the webroot for blog.renwole.com: (Enter 'c' to cancel):/home/www/blog.renwole.com【输入网站所在绝对路径回车】
Waiting for verification...
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0001_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0001_csr-certbot.pem

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/blog.renwole.com/fullchain.pem. Your cert
will expire on 2017-08-09. To obtain a new or tweaked version of
this certificate in the future, simply run certbot again. To
non-interactively renew *all* of your certificates, run "certbot
renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: //letsencrypt.org/donate
Donating to EFF:

恭喜!您的SSL证书和密钥链接已保存,你的证书将于2017-08-09到期。

注意:这里需要说明,在生成证书之前,你必须保证nginx 443端口是运行状态,否则会生成证书失败。

2.自动续订

Certbot可以配置为在证书过期之前自动更新证书。由于Let’s Encrypt SSL证书有效期时间为90天,所以建议您利用此功能。您可以通过运行以下命令来测试证书的自动续订:

$ sudo certbot --nginx certonly

如果以上正常工作,你可以通过添加运行以下操作的cron或systemd定时任务安排自动更新:

certbot renew

我们写一个自动执行脚本,建议每小时执行一次:

$ sudo crontab -e

添加以下内容:

0 */6 * * * /usr/bin/certbot renew --quiet && /bin/systemctl restart nginx

保存并退出!

通过命令查看是否添加成功:

$ crontab -l
0 */6 * * * /usr/bin/certbot renew --quiet && /bin/systemctl restart nginx

重启crontab

$ systemctl status crond.service
$ systemctl restart crond.service

通过命令观察 crontab 是否执行:

$ tail -f /var/log/cron

证书是否续订成功,可以通过以下命令管理查看证书信息:

$ certbot certificates

更多Certbot命令请参阅官方文档 //certbot.eff.org/docs/

3.配置nginx.conf
接下来修改Nginx配置文件,修改sever段,去掉相应注释,将生成的SSL证书填写到ssl_certificate后面,将生成的密钥填写到ssl_certificate_key后面,保存并重启nginx服务器即可。

# vi /usr/local/nginx/conf/nginx.conf

server {
 listen 443 ssl;

 ssl_certificate /etc/letsencrypt/live/blog.renwole.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/blog.renwole.com/privkey.pem;

# ssl_session_cache shared:SSL:1m;
 ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
 ssl_prefer_server_ciphers on;

# location / {
 # root html;
 # index index.html index.htm;
 # }
 }

使用谷歌浏览器访问//blog.renwole.com/可以看到绿色的安全小锁图标,说明网站已经https加密成功。

Linux CentOS7安装vsftpd 3.0.2服务器

实验环境:CentOS Linux release 7.3.1611 (Core)

内核版本:Linux version 3.10.0-514.el7.x86_64

1.查看系统自带的vsftpd软件包版本

# yum list vsftpd

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.cn99.com
Installed Packages
vsftpd.x86_64 3.0.2-21.el7 @base

2.开始安装

# yum install -y vsftpd

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.njupt.edu.cn
Resolving Dependencies
–> Running transaction check
—> Package vsftpd.x86_64 0:3.0.2-21.el7 will be installed
–> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
vsftpd x86_64 3.0.2-21.el7 base 169 k

Transaction Summary
================================================================================
Install 1 Package

Total download size: 169 k
Installed size: 348 k
Downloading packages:
vsftpd-3.0.2-21.el7.x86_64.rpm | 169 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
Installing : vsftpd-3.0.2-21.el7.x86_64 1/1
Verifying : vsftpd-3.0.2-21.el7.x86_64 1/1

Installed:
vsftpd.x86_64 0:3.0.2-21.el7

Complete!

安装成功!

3.查看vsftpd配置文件目录

# ll /etc/vsftpd/

/etc/vsftpd/vsftpd.conf //主配置文件,核心配置文件
/etc/vsftpd/ftpusers //黑名单,这个里面的用户不允许访问FTP服务器
/etc/vsftpd/user_list //白名单,允许访问FTP服务器的用户列表
/etc/vsftpd/vsftpd_conf_migrate.sh //vsftpd操作的一些变量和设置脚本

4.重命名原有vsftpd.conf配置文件

# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

5.新建vsftpd.conf  并插入下面参数保存并退出

# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO //拒绝匿名用户
local_enable=YES //接受本地用户
write_enable=YES //可以上传(全局控制)
local_umask=022 //本地用户上传文件的umask
dirmessage_enable=YES //用户进入一个目次后,是否给出静态提示。默认YES,默认即可
xferlog_enable=YES //表明将记录的上传下载情况写在xferlog_file所指定的文件中
connect_from_port_20=YES //FTP PORT主动模式进行数据传输时使用20端口(ftp-data)。YES使用,NO不使用。
xferlog_std_format=YES //是否采用标准格式记录日志
chroot_local_user=YES //所有的用户均不能切换到其他目录。
chroot_list_enable=YES //所有的用户均不能切换到其他目录
chroot_list_file=/etc/vsftpd/chroot_list //凡是加入vsftpd.chroot_list中的用户都不受限止,即;可以浏览其主目录的上级目录.
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd //虚拟用户使用PAM认证方式。
userlist_enable=YES //是否启用vsftpd.user_list文件。
tcp_wrappers=YES //设置vsftpd是否与tcp wrapper相结合来进行主机的访问控制
allow_writeable_chroot=YES //解决500 OOPS错误

注意:请去掉“//”和“后面的文字”否则启动ftp服务器可能会失败。

6.创建文件chroot_list文件

# touch /etc/vsftpd/chroot_list //默认留空

7.启动ftp服务

# systemctl enable vsftpd.service //设置开机自启动
# systemctl start vsftpd.service //启动ftp服务
# ss -antup | grep ftp //查看ftp服务端口
tcp LISTEN 0 32 :::21 :::* users:((“vsftpd”,pid=6354,fd=3))

显示21端口表示已经启动成功

8.新建ftp用户,其中/home/renwole是我自己的ftp目录,可以根据需要进行相应更改

# useradd -g ftp -d /home/renwole -s /sbin/nologin renwole

-g //用户组 指定用户所属的附加组
-d //目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-s /sbin/nologin //指定用户只能用于ftp登录,拒绝登录系统

9.设置ebadu用户密码为“renwoletest123”

# passwd renwole

输入两次相同密码回车设置成功

10.设置防火墙,否则无法连接ftp服务器,当然你也可以关闭防火墙。

# firewall-cmd –permanent –zone=public –add-service=ftp //将ftp服务器服务加入防火墙
# firewall-cmd –reload //不重启firewall防火墙使其重载生效

11.设置SELinux:

# getsebool -a | grep ftp
# setsebool -P ftpd_full_access on

vsftpd服务器已经配置安装完成,现在可以测试连接ftp服务器了。

Windows&Linux系统 开发测试环境集成软件包

UPUPW绿色免安装环境包,目前主要在windows下平台运行,支持包括Apache,Nginx和Kangle,并具备cmd命令行管理界面,是windows下不错的虚拟主机管理系统。

详情地址://www.upupw.net

LNMT集成环境安装包,它是有linux shell编写而成,目前也是只能在CentOS/RedHat系统下运行,支持Nginx、MariaDB、Tomcat,常用基本缓存组件,单该环境安装包不支持Apache,是一大遗憾。

详情地址://lnmt.org/

Anmpserver是一个完全开源;而且还是跨平台的开发测试环境软件包,不仅免费,而且还是绿色版,解压即用。支持平台包括Windows、Linux、OS X。该环境包支持Apache、Nginx、MySQL、PHP、还整合了WEB套件,对于菜鸟来说是极大的利器。

详情地址://www.anmpserver.com/

wdcp众人所知,是一套php虚拟主机管理系统,不仅支持Apche、Nginx、MySQL,还支持php、Apche&Nginx多版本共存和SSL。各大云市场都有该系统的镜像,目前wdcp最新版本是V3。可惜不支持windwos平台。

详情地址://www.wdlinux.cn

phpstudy是一个PHP调试环境的程序集成包,该应用集成了最新的Apache、PHP、MySQL、phpMyAdmin、ZendOptimizer,用户安装后无需配置即可使用。对于php新手来说,使用phpstudy配置windows环境可以达到省时省力的效果。但不支持Linux平台。

详情地址://www.phpstudy.net/

XAMPP是完全免费且易于安装的环境软件包,其中包含MariaDB、PHP和Perl。XAMPP开放源码包可以自定义任意修改。XAMPP还支持跨平台操作,也是多年的老牌子,推荐使用。

详情地址://www.apachefriends.org/

WampServer是一个集成安装环境平台。支持Apache、PHP、MySQL数据库。

详情地址://www.wampserver.com/

LNMP一键安装包是用Linux shell编写,可以在CentOS/RadHat/Fedora、Debian/Ubuntu/Raspbian/Deepin VPS或独立主机上安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP)。可以直接用于生产环境,如果你使用的是linux系统,我建议你使用。

详情地址://lnmp.org/

oneinstack是后起之秀,可快速在生产环境中部署lnmp/lamp/lnmpa/lnmt(Linux、Nginx/Tengine、 MySQL/MariaDB/Percona、PHP、Apache、Tomcat)适用于CentOS 5~7(包括redhat)、Debian 6~8、Ubuntu 12~15的32位和64位,推荐使用。

详情地址://oneinstack.com/

PHPWAMP是运行在windows平台下纯绿色的PHP集成环境,这个环境和WampServer差不多,支持php多版本切换。

详情地址://www.phpwamp.com/

Windows server 2012 R2二进制(绿色免安装)安装MySQL5.7.18数据库

实验环境Windows2012 R2 64 数据中心版,Mysql 5.7.18 x64位 二进制安装包。
该mysql配置适用于windows server 2003/2008/2012/2016 64位

下载安装包//dev.mysql.com/downloads/mysql/
将压缩包解压到D盘并命名为mysql-5.7.18
接下来添加系统变量;我的电脑-右击属性-或高级系统设置-高级-环境变量-系统变量。修改Path变量名中变量值的最后面添加mysql路径(在加之前先加分号;和前面已有的变量值分开)。

;D:\mysql-5.7.18\bin

解压的mysql目录默认存在my-default.ini,拷贝一份命名为my.ini。并将下面mysql优化参数替换my.ini原有的内容。

[client]
no-beep
port=3306
[mysql]
default-character-set=utf8

[mysqld]
lower_case_table_names=1
port=3306
basedir=”D:/mysql-5.7.18″
datadir=”D:/mysql-5.7.18/Data”
tmpdir=”D:/mysql-5.7.18/Temp”
character-set-server=utf8

default-storage-engine=INNODB
sql-mode=”NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
# General and Slow logging.
log-output=FILE
general-log=0
general_log_file=”D:/mysql-5.7.18/mysql-general.log”
slow-query-log=1
slow_query_log_file=”D:/mysql-5.7.18/mysql-slow.log”
long_query_time=10

log-error=”D:/mysql-5.7.18/mysql.err”

server-id=0
secure-file-priv=”D:/mysql-5.7.18/Uploads”

#YH

max_connections=151
query_cache_size=0
table_open_cache=2000
tmp_table_size=40M
thread_cache_size=10

#*** MyISAM Specific options
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=71M
key_buffer_size=8M
read_buffer_size=64K
read_rnd_buffer_size=256K

#*** INNODB Specific options ***
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=8M
innodb_log_file_size=48M
innodb_thread_concurrency=9
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0

back_log=80
flush_time=0
join_buffer_size=256K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4161
query_cache_type=0
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000

以上mysql参数是我精心优化,并参考了网上诸多实例而来,放心使用,当然你也可以根据需要修改。

注意:如果mysql目录下无下列目录,就按照配置文件里的设置创建文件夹。

D:\MySql\Data
D:\MySql\Temp
D:\MySQL\Uploads

下面添加服务名,windwos键+r调出运行,输入cmd,并安装为系统服务,具体命令操作如下;

C:\Users\Administrator>d:
D:\>cd mysql-5.7.18
D:\mysql-5.7.18>cd bin
D:\mysql-5.7.18\bin>mysqld –install MySQL
Service successfully installed.

显示已经添加mysql服务名成功.

这里需要注意;安装mysql服务名的时候有些教程需要指派my.ini文件的具体路径,其实这个指派与否并不重要,mysql启动的时候会自动识别mysql目录下的my.ini,如果没有此文件或my.ini配置不正确都会导致mysql启动失败。

安装mysql服务器成功后;默认用户名是root,密码为空。可以通过cmd设置mysql的root密码,现在给root设置密码为RenwolePasswd123。cmd命令操作如下;

C:\Users\Administrator>d:
D:\>cd mysql-5.7.18
D:\mysql-5.7.18>cd bin
D:\mysql-5.7.18\bin>mysqladmin -u root -p password RenwolePasswd123

到此mysql服务器安装已完成。现在的mysql服务器已具备生产中所需环境。

mysql占用cpu百分之百解决方案

虚拟主机的mysql数据库经常cpu 100%,日志中也没有详细说明,导致mysql运行速度慢,严重时实例还会挂掉。要查看到底哪个数据库占用cpu就需要要用到mysql过滤命令processlist,从而解决mysql跑cpu的问题。

第一种方案,登陆phpmyadmin执行以下sql语句;

show processlist;

执行后会反馈出具体存在问题的数据库。
第二种方案,使用终端登录mysql数据库,执行以下语句即可;

MariaDB [(none)]> show processlist;
+——+——+———–+——+———+——+——-+——————+–
| Id | User | Host | db | Command | Time | State | Info | P
+——+——+———–+——+———+——+——-+——————+–
| 3008 | root | localhost | NULL | Query | 0 | init | show processlist |
+——+——+———–+——+———+——+——-+——————+–
1 row in set (0.00 sec)

反馈出来的就是有问题的数据库,两种方法差不多,但结果都是一样的。

Linux Centos7下chattr lsattr命令查看、隐藏、锁定文件

今天一个客户Cenots系统的lnmp环境lnmp环境,ftp下有一个文件,即使使用root权限也删除不掉,后来才发现,该文件的属性被锁定了,于是我就把这个命令记录下来,以备以后使用。总结了2个命令

chattr与lsattr

1、实际应用如下:

chattr命令禁止修改系统关键文件,命令如下。

[root@localhost ~]# chattr +i /etc/resolv.conf

2、现在使用lsattr命令查看resolv.conf文件的属性

[root@localhost ~]# lsattr /etc/resolv.conf
—-i———– /etc/resolv.conf

3、该文件已经被锁定,即使root权限也无法删除、修改、或移动。

4、比如让某个文件只能往里面写数据,但不能被删除。该场景适用于重要的日志文件。这样写;

chattr +a /var/log/messages

5、例如显示当前目录所有隐藏文件

[root@localhost ~]# lsattr -a

大概可以这么理解:chattr是锁定用的,lsattr是查看隐藏文件的属性。