存档

‘Linux’ 分类的存档

mysql禁用validate-password插件

2016年8月17日 没有评论

近些版本的mysql做了很大的改动,在5.6.6以后的版本会开启validate-password插件。validate-password插件会对密码进行评估,如果不达标会提示你去进行修改.在生产环境这是非常不错的插件,弱口令就会消失,但是在开发环境就有些烦人了,谁都不想在每次等级都要输入一大串复杂的密码。所以我们可以选择降低validate-password对密码安全性的策略,或者直接就禁用它。

1 禁用validate-password

编辑my.cnf配置文件,在mysqld下面加入“validate-password=OFF”,然后重启mysql即可。

2 降低安全策略级别

首相我们来看一下validate-password相关的参数:

validate-password=ON/OFF/FORCE/FORCE_PLUS_PERMANENT: 决定是否使用该插件(及强制/永久强制使用)。

validate_password_dictionary_file:插件用于验证密码强度的字典文件路径。

validate_password_length:密码最小长度。

validate_password_mixed_case_count:密码至少要包含的小写字母个数和大写字母个数。

validate_password_number_count:密码至少要包含的数字个数。

validate_password_policy:密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。

validate_password_special_char_count:密码至少要包含的特殊字符数。

其中,关于validate_password_policy-密码强度检查等级:

0/LOW:只检查长度。

1/MEDIUM:检查长度、数字、大小写、特殊字符。

2/STRONG:检查长度、数字、大小写、特殊字符字典文件。

我们可以将安全策略降低为LOW,相信这样虽然还会有长度限制,但是已经足够简单了。

编辑my.cnf文件,在mysqld下面加入:


[mysqld]

validate_password_policy=LOW

然后重启mysql即可!

mysql重置root密码

2016年4月14日 没有评论

今天在mac上面安装mysql,安装之后用root登录,发现进不去,说需要密码,使用DMG包安装时提示我生成的随机密码也尝试了,依旧不行!不过生成root密码页面提示如果无法登录可以尝试查看How to Reset the Root Password,进行重置root密码工作。如果你觉得自己英文还行可以直接参考前面那个连接去查看,好了,下面进入正题重置密码。

我是在mac下面做的重置root操作,不过windows下面的很类似,本文的必要条件是你有管理mysql服务器账号或者在本机上面,如果上面2个都不满足,那么这篇文章就不适合你了。

第一步关闭正在运行mysql服务器。

官网手册的命令是这样的,不过你可以像我这样通过ps查看mysql的进程id,然后kill它,当然这里最好把ps中启动mysql的命令先记录下来,后面会使用的。

kill `cat /mysql-data-directory/host_name.pid`
#ps方法
ps aux|grep 'mysql'
#这里把%pid%替换为上面ps给的进程id
sudo kill %pid%

第二步建立mysql init文件
这一步是要建立一个mysql init文件,配合mysqld的–init-file参数来使用的.init-file参数英文说明是”Read SQL commands from this file at startup”,我的个人理解是读取指定文件中的sql语句,并在mysql启动的时候执行它们。
mysql版本5.7.6和以后使用”ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘MyNewPass’;”,如果你的版本是其他版本可以使用”SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘MyNewPass’);”尝试一下。

#5.7.6和以后版本
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
#5.7.6以前版本
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

保存文件。
第三步重启mysql
这时候我们来重启我们的mysql,不过是加上–init-file参数的命令。还记得我上面让你记住的ps下面的mysql启动命令吧,就是这里用的。官方手册是”mysqld_safe –init-file=/home/me/mysql-init &”,也许在其他类*unix系统上面可以,但是我在mac下面尝试了,启动不起来!如果你是centos或者ubuntu用户可以尝试一下官方手册的命令,不过mac下面还是建议使用ps中显示的命令,再后面追加–init-file参数。


#官网手册命令,mac用户不推荐

mysqld_safe --init-file=/home/me/mysql-init &

#mac用户推荐命令

sudo /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --init-file=/Users/king/sql/alter_root.sql &

“/Users/king/sql/alter_root.sql”为你第二步是保存的sql文件.此时再使用root用户用你重置的命令登录就可以成功登录了!

windows下面的重置root密码功能应该和mac下面类似,只要把shell命令换成dos命令即可,具体的可以参考上面的官网手册地址。

==2016-9-26号补更============================================================================

前几天在虚拟机里面装了mysql5.7.15,装完以后用root空密码登录失败.于是就用上面的方法重置密码,发现它并没有mysqld_safe文件,于是上面的方法就不是很适用了,就把重新查找了些资料,花了好久才解决!

我在stackoverflow上面找到了一种解决办法:

1. 停止mysql服务:
systemctl stop mysqld

2. 设置mysql的环境变量参数 
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

3. 启动mysql服务
systemctl start mysqld

4. root无密码登录
mysql -u root

5. 更新root密码
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword')
    -> WHERE User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit

6. 关闭mysql服务
systemctl stop mysqld

7. 删除mysql环境参数
systemctl unset-environment MYSQLD_OPTS

8. 再次启动:
systemctl start mysqld

9. 用root登录:
. mysql -u root -p
当然可以把

skip-grant-tables写到”my.cnf”中重启mysql也可达到同样的目的!

centos安装EPEL源

2016年4月7日 没有评论

在虚拟机里面使用我的one_shell_install_lnmp脚本安装lnmp环境的时候,发现报错了,提示缺少libmcrypt-devel包。以前我是在centos7下面测试过我的脚本的,是可以通过的,于是我就又检查了一下脚本,里面有安装libmcrypt-devel 这个选项。我又试着单独执行了一下安装libmcrypt-devel包的命令,依然是没有任何反应。刚开始我第一时间没有想到源的问题,类似以往的习惯去google,发现也有同学和我类似,说163源上面没有libmcrypt-devel这个包,于是就有了今天这个文章。当然这篇文章是笔记性质的,如果对你有帮助,十分荣幸,有问题也可以留言。

EPEL是什么

EPEL全名是Extra Packages for Enterprise Linux(epel wiki:https://fedoraproject.org/wiki/EPEL),是一个由特别兴趣小组创建、维护并管理的,针对 红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS、Scientific Linux、Oracle Enterprise Linux)的一个高质量附加软件包项目。

其实我也是今天才了解的EPEL,以前虽然使用过它,但是对它没有什么系统了解,上面介绍它的内容也是摘自wiki。

EPEL安装

我写了一个install_epel.sh的shell脚本, 功能就是检测当前系统是否有epel源,如果不存在就安装。


#!/bin/bash

#检查epel源是否安装
yum repolist|egrep "epel" >& /dev/null
if [ $? -ne 0 ];then
epel_file="epel.noarch.rpm"
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm -O $epel_file
rpm -ivh $epel_file
rm -f $epel_file
yum makecache
fi

关于yum或者epel其他介绍,请自行google!

分类: Linux 标签: ,

Systemd配置文件service小解

2015年11月30日 没有评论

最早看到systemd还是在微博上面看到陈浩在回答别人如何解决死掉的进程如何重启的,陈浩说systemd这个“神器”可以轻松解决这个问题。在那之前我对systemd还是一无所知的,所以特意google了一下systemd到底是个神马东西。

网上对systemd的评价毁誉参半,抵制systemd说它不稳定有时候可能crash,或者说脚本从原始Sysvinit移植到systemd会花费运维人员大量的时间(包含systemd的学习时间)之类的,甚至有人拿出来Unix的哲学“ do one thing and do it well”,说systemd做了系统启动等等很多工作,不见得都能把它做好。对于这些种种理由,我觉得没必要一一反击,看看这一篇《浅析 Linux 初始化 init 系统,第 3 部分: Systemd》。当然我觉得对开发和运维人员非常有必要学习systemd的原因是redhat7系列(centos7),debian系列等等linux主要衍生版本在他们的新版本中都在转投systemd怀抱,所以如果你是linux系统的使用者,我觉得学习了解systemd还是非常非常有必要的。

service配置样例

这是一个简单的脚本启动,进程终止以后会自动重启!

[Unit]
Description=a php im push script
Wants=network.target

[Service]
Type=simple
ExecStart=/path/to/your/script
Restart=always

[Install]
WantedBy=multi-user.target

Description是对服务的描述,方便记忆和阅读,一般来说这里可以随心所欲的。
Wants是服务项的启动依赖那些项。
Type是服务的类型,有simple,forking,oneshot,dbus,notify,idle。其中我们常用的类型有simple,forking,oneshot。simple 是默认,这是最简单的服务类型。意思就是说启动的程序就是主体程序,这个程序要是退出那么一切都退出。forking 标准 Unix Daemon 使用的启动方式。启动程序后会调用 fork() 函数,把必要的通信频道都设置好之后父进程退出,留下守护精灵的子进程。oneshot种服务类型就是启动,完成,没进程了。
ExecStart是启动脚本的路径和参数,参数和脚本之间用空格分割。
Restart是配置启动项是否需要重启,有no,on-success,on-failure,on-abnormal,on-watchdog,on-abort,always。这些选项就是他们字面意思,abnormal意思是反常的,看文档里面说除了信号SIGHUP,SIGINT,SIGTERM,SIGPIPE以外其他信号终止的,都是反常的包含code dump,操作超时等。
WantBy指服务在何种情况下面会被启动,例如上面multi-user.target指的是多用户环境。
当然我觉得这几个简单的配置项几乎就可以解决我们日常60%的问题了,其他特殊的需求可以查看文档。
如果你的英文还不错,可以查看下面2个英文手册,service手册unit手册

分类: Linux 标签:

ssh公钥登录centos

2015年4月18日 没有评论

折腾了好久,差不多2个小时,其实很简单的,而且网上的教程也很多,但是大多类似,需要注意的地方很少有人对新手提示。当然也可以归结我对系统还是不熟悉,下面整理一下我艰苦奋斗的结果吧!

测试环境

服务器:CentOS release 6.6 (Final)

客户端:win7

ssh软件:xshell5

ssh服务配置

sshd配置文件,一般位于“ /etc/ssh/sshd_config”,使用编辑器打开

vim /etc/ssh/sshd_config

注意以下配置文件内容:

#是否允许root登录
PermitRootLogin yes

#ssh使用Rsa登录允许
RSAAuthentication yes
#ssh允许公钥登入
PubkeyAuthentication yes
#公钥文件位置
AuthorizedKeysFile .ssh/authorized_keys

#是否允许密码登入,改为no就禁止密码登入
PasswordAuthentication yes

配置完成以后,重启sshd进程。

service sshd restart

至此服务端大致配置完成,接下来我们来用工具生成登陆的公钥吧。

xshell公钥

在xshell简体中文中的“工具->新建用户密钥生成向导”

类型选择rsa,长度1024即可。

然后是下一步下一步了
xshell1

这里的密码出于安全目的最好再设置一个,这样在你的密钥丢失的情况下不会让黑客十分容易的登入服务器。

xshell2

 

这里注意公钥格式可选有3种可选,具体就不介绍了。点击保存为文件,然后完成即可。

然后上传保存的公钥文件(pub格式的文件)到用户主目录的.ssh目录下面,若.ssh目录不存在,请自行新建。

cd ~/.ssh/
cat id_rsa_centos_1024.pub >> authorized_keys
chmod -R 777 ~/.ssh
service sshd restart

最后需要注意是请禁用你的selinux,如果不仅用,可能还是登入不了,我就被它困住了2个小时,一直提示我“用户密钥未在远程主机上注册”.

参考资料:http://codelife.me/blog/2012/09/01/ssh-session-profile-management-in-terminal-of-macos-x/

ubuntu14.10安装vlck

2015年2月13日 没有评论

自从系统更新到14.10以后,一直没有安装上vlc,使用软件中心安装时总是失败,使用apt安装时,提示一个依赖库版本不行,所以就这么一直耽误下来了。今天在搜http live streaming的时候又看到vlc,于是就想给电脑装上。

google了一下,分享一下经验:


#添加ppa

sudo add-apt-repository ppa:videolan/master-daily

sudo apt-get update

sudo apt-get install vlc

vlc是一款非常强力的播放器,enjoy it!

vlc

ubuntu 14.04解决gedit gb2312编码问题

2014年8月4日 没有评论

使用gedit打开gb2312或者gbk编码的文件时,如果文件过大,会导致gedit出现错误退出。这时候,可以通过修改gedit自动检测编码的顺序来解决这个问题。
执行下面的命令:


sudo gsettings set org.gnome.gedit.preferences.encodings auto-detected "['GB18030','UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16']"

这条命令,把GB18030放到了gedit检测顺序的第一位,而GB18030编码可以保证GB2312和GBK编码文件的正常打开。

为了大家方面复制粘贴,我把代码内容粘贴到下面:

sudo gsettings set org.gnome.gedit.preferences.encodings auto-detected “[‘GB18030′,’UTF-8’, ‘CURRENT’, ‘ISO-8859-15’, ‘UTF-16’]”

原文地址:http://lxdlife.us/system/ubuntu-gedit.html

分类: Linux 标签: ,

Stardict-Ubuntu下不错的词典工具

2014年5月28日 没有评论

实话实说,一直对ubuntu下面没有找到一款类似有道词典或者金山词典这样的软件而苦恼,毕竟英文水平有点菜,看很多英文资料的时候很吃力,一些得力的工具帮忙可以有效提高阅读的效率!今天在Ubuntu软件中心终于被我找到一款类似的软件,拿来和大家分享一下-Stardict(星际译王)!

安装Stardict

apt-get安装:

sudo apt-get install stardict

软件中心安装:

在软件中心搜索stardict,然后选择安装即可!

安装离线词典

下载地址:

StarDict Dictionaries — 星际译王词库 词典下载,包括中文,日文,韩文词典等

zh_CN 简体中文词典,由上面的地址进入,包括汉英与英汉词典

推荐下载:朗道英汉字典,朗道汉英字典,牛津英汉双解美化版。前两个词典词汇量比较大,牛津的词典包括还包括英文解释。

点击词典后面的 tarball 就可以下载了。

stardict离线词典的保存位置在Ubuntu下面在“/usr/share/stardict/dic”,所以我们需要把下载好的词典解压到这个目录下面就可以在词典管理里面找到了。

现在将这三个词典解压到星际译王的词典目录下,终端输入命令:

tar  -xvf  stardict-oxford-gb-formated-2.4.2.tar.bz2  -C  /usr/share/stardict/dic

tar  -xvf  stardict-langdao-ce-gb-2.4.2.tar.bz2  -C  /usr/share/stardict/dic

#tar  -xvf  stardict-langdao-ec-gb-2.4.2.tar.bz2  -C  /usr/share/stardict/dic

设置星际译王

打开星际译王

d1

2.

进入词典管理,可以看到刚才下好的离线词典

stardict1

选择词典管理,可以调整词典的顺序,也就是翻译时,哪一个词典在前哪一个在后。

QQWry,Man,Dict.cn 这三个可以删掉了

stardict2

3.

进入首选项 -> 取词,可以根据需要将两个选项全部钩选。

选择一个取词按键,我选择了 Ctrl

stardict3

选择首选项 -> 网络词典,可以把网络词典取消了。

d2

其他设置可以根据个人喜好进行选择。

 桌面取词

这时无论是在终端,浏览器或者pdf阅读器里面在选中词以后再按我们设置的取词键(我的设置的是F4,不经常用到)!

终端取词

sd1pdf取词

sd2很不错吧!

参考文章地址:http://hi.baidu.com/sf_chipan/item/41f642579b67ecb08c12ede7

 

 

 

ubuntu下chkconfig的代替工具–sysv-rc-conf

2014年4月25日 没有评论

今天早上在配置新安装的ubuntu14.04时,使用chkconfig时发现系统提示找不到指定的指令,在centos下一直都是这么做的,难道还需要安装工具吗?google一番以后,发现原来ubuntu在12.10以后不再支持chkconfig这个工具,其替代工具是sysv-rc-conf.

安装sysv-rc-conf


sudo apt-get install sysv-rc-conf

帮助命令


sudo sysv-rc-conf --help

显示启动项列表


sysv-rc-conf --list  #代替 chkconfig --list

sysv-rc-conf --list mysqld #代替 chkconfig --list mysqld

添加启动项


sysv-rc-conf apache2 on #代替 chkconfig apache2 enable

添加普通开机启动命令

例如我的goagent需要开机启动,如果写成一个init.d脚本文件太麻烦,那么怎么设置开机启动方法那?

最简单的办法,按super键(键盘windows键),然后在里面输入启动,在搜索列表里面选择启动应用程序。

启动

然后点击启动应用程序,然后选择添加按钮,弹出下面的对话框,在命令处写入相应的命令,如我的goagent的开机启动命令为”/home/king/apps/goagent/local/goagent-gtk.py”.

添加启动应用程序

然后保存退出重启,我们就看到goagent自动启动了!

Iptables学习笔记

2014年4月23日 没有评论

最近一段时间一直在做路由wifi的项目,这里面主要用的就是前面日志里面提到过的wifidog,而wifidog的核心其实就是iptables。所以在这过程中不得不对iptables进行深一步的学习和了解,以便能更好的完成工作。以前在centos下面对iptables也有粗浅的了解,但那就是简单的按照/etc/sysconfig/iptables文件中它的样例,该一下端口添加一条http的,然后重启iptables或者是更暴力直接使用iptables -F直接解决问题。下面就是我接触学习过程做的一些笔记。

1 iptables帮助

iptables -h 或者  iptables –help

你会看到iptables的各种用法了,当然可能大部分都是英文,英文不是很好的同学可能会有点纠结了,我这里面会尽可能的提到大部分我所知道的用法,没有提到的也欢迎大家补充。

iptables主要参数:


-A 向规则链中添加一条规则,默认被添加到末尾

-T指定要操作的表,默认是filter

-D从规则链中删除规则,可以指定序号或者匹配的规则来删除

-R进行规则替换

-I插入一条规则,默认被插入到首部

-F清空所选的链,重启后恢复

-N新建用户自定义的规则链

-X删除用户自定义的规则链

-p用来指定协议可以是tcp,udp,icmp等也可以是数字的协议号,

-s指定源地址

-d指定目的地址

-i进入接口

-o流出接口

-j采取的动作,accept,drop,snat,dnat,masquerade

--sport源端口

--dport目的端口,端口必须和协议一起来配合使用

2 iptables 添加记录

禁止访问80服务器端口

iptables -A INPUT -p tcp –dport 80 -j DROP

这里面-A 表示append添加,后面跟着的INPUT是链表名称,也就是这条记录添加到INPUT表中,后面的-p 表示协议,后面的tcp表示tcp协议,–dport表示目标端口号,80就表示服务器的80端口了,-j表示采取那种操作,DROP表示不允许

禁止ping操作

iptables -A INPUT -p icmp -j DROP

这里面的-p icmp就是制定icmp协议(ping协议)即禁止ping操作

禁止192.168.1.10访问本机http服务

iptables -A INPUT -p tcp -s 192.168.1.10 –dport 80 -j DROP

上面提到的参数就不再一一解释了,-s表示source的意思也就是来源后面跟的是ip地址

禁止192.168.1.10的8080端口进行tcp链接

iptables -A INPUT -p tcp -s 192.168.1.10 –sport 8080 -j DROP

阻止MAC地址为00:0C:29:AC:95:05主机的所有通信

iptables -A INPUT -m mac –mac-source 00:0C:29:AC:95:05 -j DROP

3 链(chain)操作

自定义链

iptables -N MYCHAIN

清空链指定链

iptables -F MYCHAIN

备注:注意这里如果 -F后面不跟链名,会清空所有链

删除指定链

iptables -X MYCHAIN

查看指定链

iptables -L INPUT -n

备注:同时如果-L后不加链名会显示所有链,-n表示不进行反向解析,速度会快很多

将自定义链关联起来

iptables -A INPUT -j MYCHAIN

这里的意思是INPUT链之后跳到MYCHAIN链,如果不仅这一步,我们自定义的链就不会起作用,我们在进行-L进行查看操作时,就会看到Chain MYCHAIN (0 references),如果我们进行上面的关联操作就会变成Chain MYCHAIN (1 references)这样。

目前就介绍这么多iptables的基础内容吧,当然还有很多内容没有说道,如果你赶兴趣可以google或者查看《鸟哥的Linux私房菜:服务器架设篇》,里面有更多关于iptables的精彩内容!