月度归档:2017年05月

Linux centos7 SSH登录慢的解决方法

我们在安装linux系统的时候都没有关闭一个服务,导致登陆SSH时 输入完用户名后要等一会才能输入密码,经总结下面方案可解决此问题。

修改sshd_config以下两处,重启ssh即可。

# vi /etc/ssh/sshd_config
GSSAPIAuthentication no
UseDNS no

重启ssh

# systemctl restart sshd

以上能完美解决。

linux centos7清除系统日志、历史记录、登录信息

平时不管是web还是系统产生的日志都可能导致洗盘爆满,所以我在这里分享一些基本常用清理linux日志的方法。

# echo > /var/log/wtmp //清除用户登录记录
# echo > /var/log/btmp //清除尝试登录记录
# echo>/var/log/lastlog //清除最近登录信息
# echo > /var/log/secure //登录信息
# echo > /var/log/messages
# echo>/var/log/syslog //记录系统日志的服务
# echo>/var/log/xferlog
# echo>/var/log/auth.log
# echo>/var/log/user.log
# cat /dev/null > /var/adm/sylog
# cat /dev/null > /var/log/maillog
# cat /dev/null > /var/log/openwebmail.log
# cat /dev/null > /var/log/mail.info
# echo>/var/run/utmp

清除操作过的命令记录

# echo > .bash_history //清除保存的用户操作历史记录
# history -cw //清除所有历史

linux Centos7默认firewalld防火墙使用命令

Centos7默认的firewalld防火墙说实话真不好用,不如使用iptables。但一物的存在是有它的道理,比如在高级功能方面iptables就要次于firewalld防火墙,所以建议大家还是要追随主流,现在开源产品相对过去的版本更新很快,所以要跟得上脚步,特别是对于运维人员来讲。下面是我平时在生产环境当中维护机器常用到的,大家可以参考下。

基本操作;

 # systemctl start firewalld //启动
 # systemctl status firewalld //状态
 # systemctl disable firewalld //禁用
 # systemctl stop firewalld //停止

systemctl在centos7中必不可缺少的管理工具,它具备service和chkconfig的所有功能;

 # systemctl start firewalld.service //启动某个服务
 # systemctl stop firewalld.service //关闭某个服务
 # systemctl restart firewalld.service //重启某个服务
 # systemctl status firewalld.service //显示某个服务的状态
 # systemctl enable firewalld.service //开机时随机自启动
 # systemctl disable firewalld.service //禁止开机启动
 # systemctl is-enabled firewalld.service //查看是否开机启动
 # systemctl list-unit-files|grep enabled //查看已经启动的服列表
 # systemctl --failed //查看启动失败的服务列表

基本配置firewalld-cmd;

 # firewall-cmd --version //查看防火墙版本
 # firewall-cmd --help //查看命令操作帮助
 # firewall-cmd --state //显示当前状态
 # firewall-cmd --zone=public --list-ports //查看所有打开运行的端口
 # firewall-cmd --reload //不重启立即加载
 # firewall-cmd --list-all-zones | more //查看区域信息情况
 # firewall-cmd --get-zone-of-interface=eth0 //查看指定接口所属区域
 # firewall-cmd --panic-on //拒绝所有包
 # firewall-cmd --panic-off //取消拒绝状态
 # firewall-cmd --query-panic //查看是否拒绝

举个例子,如何打开一个端口,例如3306;

 # firewall-cmd --zone=public --add-port=3306/tcp --permanent //添加3306端口(--permanent)永久生效,没有此参数重启后失效
 # firewall-cmd --reload //不重启立即加载
 # firewall-cmd --zone= public --query-port=3306/tcp //查看加入3306端口状态
 # firewall-cmd --zone= public --remove-port=3306/tcp --permanent //删除刚刚加入的防火墙规则3306
 # firewall-cmd --permanent --remove-icmp-block=echo-request //删除禁ping
 # firewall-cmd --permanent --add-icmp-block=echo-request //开启禁ping
 # firewall-cmd --get-service //查看已被允许的信息

具体的规则管理,可以使用 firewall-cmd,具体的使用方法可以

 # firewall-cmd --help

firewall-cmd高级功能可以到官方资料库了解更多信息。

//fedoraproject.org/wiki/FirewallD/zh-cn
//access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html

//www.ibm.com/developerworks/cn/linux/1507_caojh/

注意:以上操作方法以及命令并不适用于Centos7以下版本,除你在其他linux发行版单独安装firewall的。

linux MariaDB(MySQL)数据库更改用户权限

平时维护MariaDB(MySQL)数据库服务器,难免会用到一些常用的命令,MariaDB数据库长时间不出问题,有些sql语句就会忘记,之前也没有记载,今天没事就记录下,也共享给大家一块看看,有不足之处还望谅解。

本文操作适用于MariaDB所有版本,适用于MySQL5.2以上版本
本文生产环境Centos7.3 64位 ,MariaDB server 10.2.5

MariaDB 赋予用户权限命令的简单格式可概括为:

grant 权限 on 数据库对象 to 用户;

# mysql -u root -p //登录数据库
 Enter password:
 MariaDB [(none)]> show databases; //查看当前数据库中所有数据库
 MariaDB [(none)]> create database renwole; //新建数据库名为“renwole”
 MariaDB [renwoleBD]> show tables; //显示某个数据库中的表文件
 MariaDB [(none)]> select version(),current_date; //查看数据库版本和当前日期
 MariaDB [(none)]> drop database renwole; //删除renwole数据库
 MariaDB [renwoleDB]> desc 表名称; //查看数据库表结构
 MariaDB [(none)]> show variables like '%dir%'; //查看数据库存储路径
 MariaDB [(none)]> show grants; 查看当前用户权限
 MariaDB [(none)]> show grants for root@'localhost'; //查看用户权限

下面就MariaDB数据库实例讲解,例如:

创建添加一个renwole用户,密码为renwole123

# mysql -u root -p //登录数据库
 Enter password:
 MariaDB [(none)]> insert into mysql.user(Host,User,Password) values("localhost","renwole",password("renwole123"));

新建一个renwoleDB数据库,并授权用户renwole拥有该数据库的所有权限。

MariaDB [(none)]> create database renwoleDB; //新建
 MariaDB [(none)]> grant all privileges on renwoleDB.* to renwole@% identified by 'renwole123'; //授权,关键字 “privileges” 可以省略。
 MariaDB [(none)]> flush privileges; //刷新用户权限

如果想给一个用户查询、插入、更新、删除数据库中的所有表数据权利,可以这样来写:

MariaDB [(none)]> grant select on on renwoleDB.* to renwole@’%’ //查询
 MariaDB [(none)]> grant insert on on renwoleDB.* to renwole@’%’ //插入
 MariaDB [(none)]> grant update on on renwoleDB.* to renwole@’%’ //更新
 MariaDB [(none)]> grant delete on on renwoleDB.* to renwole@’%’ //删除

或者,用一个语句命令替代:

MariaDB [(none)]> grant select,insert,delete,update on renwoleDB.* to renwole@’%’ identified by 'renwole123';

如果想查看所有Mysql用户的权限,代码如下;

MariaDB [(none)]> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

如果想删除一个用户及权限,可以这样写;

MariaDB [(none)]> drop user renwole@localhost;

如果想修改一个用户密码;

MariaDB [(none)]> update mysql.user set password=password('New-password') where User="renwole" and Host="%";
 MariaDB [(none)]> flush privileges;

添加高级root用户整个mysql服务器权限

grant all on *.* to root@'%' identified by 'Password';

注意:【identified by】这个句子可以顺带设置密码,如果不指定该用户口令不变。

撤销已经赋予给MariaDB用户的权限。
revoke 跟 grant 的语法相似,只需要把关键字 “to” 换成 “from” 即可,例如:

grant all on *.* to renwole@%;
 revoke all on *.* from renwole@%;

MariaDB数据库的 grant、revoke 用户权限注意事项;grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“,例如:

MariaDB [(none)]> grant select on renwoleDB.* to renwole@% with grant option;

这个特性一般用不到。实际中,数据库权限最好由root用户来统一管理。

注意:有时候renwole@’%’授权任意主机连接的时候需要加单引号,但有时又不需要。

linux centos7.3修改、破解mariadb(MySQL)数据库root密码

修改mysql密码有多种方案下面介绍2个

方案一

 # /usr/local/mysql/bin/mysqladmin -uroot -p password "New-password"
 Enter password: 【输入原有密码】 //输入后回车密码就修改成了New-password

方案二

 # mysql -uroot -p //回车登录mysql系统
 Enter password: 【输入原来的密码】

 MariaDB [(none)]> use mysql; //进入mysql数据库
 MariaDB [(none)]> update user set password=passworD("New-password") where user='root';
 MariaDB [(none)]> flush privileges; //刷新数据库
 MariaDB [(none)]> exit; //退出

修改完成!
如果你不记得之前的老密码,那么只能尝试破解,破解方案以下:
前置条件:必须拥有服务器最高管理员(root)权限。

 # systemctl stop mysql
 # /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

“&” 表示在后台运行,若不再后台运行,就再打开一个终端。

 # mysql
 MariaDB [(none)]> use mysql;
 MariaDB [(none)]> UPDATE user SET password=password("New-password") WHERE user='root';
 MariaDB [(none)]> flush privileges;
 MariaDB [(none)]> exit;

破解完成!

linux centos7下MariaDB10.1升级到MariaDB10.2新版本

下载二进制安装包,地址 //downloads.mariadb.org/mariadb/10.2.5/

# cd /usr/local/
# wget //mirrors.neusoft.edu.cn/mariadb//mariadb-10.2.5/bintar-linux-glibc_214-x86_64/mariadb-10.2.5-linux-glibc_214-x86_64.tar.gz

停止当前数据库

# systemctl stop mysql.server

删除MariaDB10.1的软连接

# rm -rf /usr/local/mysql

注意:首先你的mysql在安装的时候创建的是软连接,如果不是就重命名mysql文件夹,否则删除后数据就没有了(除非你的数据不是放在mysql安装文件夹内)。不删除还有个好处;如果升级失败,就能快速回滚。如果/usr/local/mysql目录是软连接,请忽略这段。

# mv /usr/local/mysql /usr/local/mysqlbak

解压下载的安装包,刚刚是下载到/usr/local/下

# tar zxvf mariadb-10.2.5-linux-glibc_214-x86_64.tar.gz //解压文件
# ln -s mariadb-10.2.5-linux-glibc_214-x86_64 mysql //创建软连接
# chwon -R root .
# chown -R mysql data
# systemctl start mysql.server

升级成功,然后再升级mysql数据库字典,否则日志中会产生很多错误信息。

# /usr/local/mysql/bin/mysql_upgrade -uroot -p
Enter password: 【输入mysql的root密码】

Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database……………..
…………………………………..
………………….
Upgrade process completed successfully.
Checking if update is needed.

升级报错的话,检查你的my.cnf文件,看其中的数据库存储路径是否正确。我的数据存储与mysql安装不在同一目录。

# systemctl restart mysql.server //重启mysql数据库

届时已经升级成功,可以登录mysql查看

# mysql -uroot -p
Enter password: 【输入mysql的root密码】

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9110
Server version: 10.2.5-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MariaDB [(none)]>

升级完成。

总结:升级的过程当中有些问题需要注意,我升级的时候mysql安装路径和数据存储文件不在同一目录,这样我就可以直接重命名之前的mysql安装目录(或删除软连接),如果您的数据是和mysql安装文件在同一目录,那么就需要把/usr/local/mysqlbak/data ,data这个目录拷贝到mariadb-10.2.5-linux-glibc_214-x86_64内,并给mysql用户和组权限即可。

linux centos7.3导出、导入、Mariadb(MySQL)数据库命令

导出mariadb数据库有多种解决方案,一般采用phpmyadmin或Navicat for MySQL等,我演示是常用的命令行模式。

分别是;-u用户、-p密码、数据库名、> 导出路径。以.sql结尾。

/usr/local/mysql/bin/mysqldump -uroot -p renwole > /home/renwole.sql

回车后输入用户密码,导出成功,文件在home下。

注意:如果只导出表结构,在-p后面加上-d即可。
导入数据库有2种解决方案。

方案一

MariaDB [(none)]> create database renwole; //建立空数据库名
MariaDB [(none)]> use renwole; //选择数据库
MariaDB [(none)]> set names utf8; //设置数据库导入编码
MariaDB [(none)]> source /home/renwole.sql; //导入数据(注意sql文件的路径)

方案二

# mysql -uroot -p renwole < /home/renwole.sql

建议使用第二种方案导入,简单快捷不用设置导入编码,不易出错。
以上解决方案也适用于mysql&mariadb任意版本

转载请注明本站,谢谢!

linux centos7.3修改现有mariadb数据库存储路径

有的lnmp环境包或yum安装方式默认将mariadb数据库装在系统盘,其中就包括数据存储文件,万一系统宕机无法启动,那么数据文件就有损坏的可能,甚至造成无法挽回的局面。接下来我们就可以单独将数据存储文件放在其他分区或数据盘,这样即便是系统挂掉,也能轻易快速恢复mariadb数据库的正常运行。

如果你不知道当前数据库路径,只需要输入以下命令即可查看到:

回车后输入您的mariadb密码后回车

# mysql -uroot -p

输以下命令显示各种mariadb的路径调用情况。其中datadir项就是现存储的路径。

MariaDB [(none)]> show variables like ‘%dir%’;

退出数据库登录状态

MariaDB [(none)]> exit;

停止数据库

# systemctl stop mysql.server

新建mariadb新存储的路径文件夹

# mkdir -p /home/mysql/data

进入home目录

# cd /home

给新的路径文件夹mysql用户权限

# chown -R mysql:mysql /mysql

修改下面启动脚本mysql文件中的datadir路径,mysql启动脚本路径不一样,也有可能会在/usr/lib/systemd/system目录下(centos7)

# vi /etc/init.d/mysql

找到datadir=/var/lib/mysql修改成datadir=/home/mysql/data,如果有相同的/var/lib/mysql路径,同样修改为/home/mysql/data,

例如:

“innodb_data_home_dir”和“innodb_log_group_home_dir“

修改后保存并退出,在修改my.cnf中的数据存储路径

修改my.cnf文件中datadir=路径和上面修改的方法一样,修改还好以后保存并退出,然后启动mariadb服务。

# vi /etc/my.cnf

# systemctl start mysql.server

注意:如果你有数据文件,那么就把你的贝到/home/mysql/data下,还有/var/lib/mysql下的mysql件夹也拷贝过去,其他文件就不要拷贝了,这样你新建的用户和密码都会是你以前的。如果拷贝所有文件,就会启动报错。

如果以上方式不能成功且启动报错,可以在重启失败后执行初始化数据库命令,执行数据库命令前,/home/mysql/data下必须是空的,初始化成功后再导入数据库,以下是初始化数据库的命令:

# /usr/local/mysql/scripts/mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/home/mysql/data

再次启动就正常了

# systemctl restart mysql.server

初始化成功后,数据库密码是空的,执行以下命令开始设置密码

# /usr/local/mysql/bin/mysql_secure_installation

注意:第一个是提示你输入mysql密码,其实新安装的mysql默认是空密码,然后直接回车输入两次新密码回车,接下来全部按Y即可(基本上是删除了test测试数据库和匿名账号和删除后立刻生效(最后一个Y))。
到此数据库修改路径已经完成。如你有更好的方法,希望你能提出来,我们一起学习共同努力、进步。转载请注明,谢谢!

2017常用的mirrors开源镜像站

以下镜像站对国内速度都比较快的,有的不是在国内,但实用性非常强

//mirrors.aliyun.com //阿里云开源镜像(国内推荐使用)
//mirrors.163.com //网易163开源镜像站(国内推荐使用)
//mirrors.sohu.com //搜狐开源镜像站(国内)
http://vault.centos.org //Centos官方开源镜像站(国外推荐使用)
//mirrors.ctyun.cn //电信天翼云开源镜像站(国内)

若以上常用开源镜像站不能满足你的需求,可以到Centos官方推荐的去选择

//mirror-status.centos.org/#cn

vim编辑器显示行数

常常在linux下使用vi编辑某个文件的时候,基本上不显示任何行数,有时候必须将文件传输到本地使用强大编辑器修改,在这里我分享一个小命令了,当你编辑某个配置文件的时候输入以下命令即可显示行数。适用于任何linux开源系统。

set nu
set number

 

永久生效方案;

# vi ~/.vimrc //或者直接输入添加下面命令

set nu

添加以后保存并退出!

这样就不用每次都输入命令查看行数了,以上2种方法都可以为vi设置行号,如果要取消的话,则输入

:set nonu

并删除vi ~/.vimrc文件中的set nu即可。

行号的设置是vi的环境设置,不会影响文本的内容。一定要切记不是在终端输入,是在进入编辑文本的时候,例如:

# vi /usr/local/nginx/nginx.cnf

执行后输入Shift+: 然后输入上面提到的命令参数就显示行数啦。