前两天由于数据库被黑客攻击,致使数据被删除,数据库被损坏,系统从新安装了一下,因此环境也须要从新再搭一遍,包括mysql、nodejs、git、nginx和redis的安装。因为以前安装的mysql安装方式比较麻烦,此次使用yum的方式来安装mysql数据库,这篇文章记录下mysql的安装过程。html
/usr: 系统级的目录,能够理解为C:/Windows/;/usr/bin 存放应用程序;/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,倒是许多程序运行所必需的一些函数库文件,能够理解为C:/Windows/System32
*好比Java的安装目录,我会放在这里。node
/usr/local:用户级的程序目录,能够理解为C:/Progrem Files/。
用户本身编译的软件默认会安装到这个目录下。
*好比Hadoop,Tomcat的安装目录我通常会放在/usr/目录下mysql
/opt:给主机额外安装软件所摆放的目录。用户级的程序目录,能够理解为D:/Software,opt有可选的意思,这里能够用于放置第三方大型软件(或游戏),当你不须要时,直接rm -rf掉便可。在硬盘容量不够时,也可将/opt单独挂载到其余磁盘上使用。
*好比临时上传到Linux里的软件;tar.gz rpm等文件,用做软件仓库。linux
完整的目录结构说明:nginx
/git
这就是根目录。对你的电脑来讲,有且只有一个根目录。全部的东西,我是说全部的东西都是从这里开始。举个例子:当你在终端里输入“/home”,你实际上是在告诉电脑,先从/(根目录)开始,再进入到home目录。redis
/rootsql
这是系统管理员(root user)的目录。对于系统来讲,系统管理员就比如是上帝,它能对系统作任何事情,甚至包括删除你的文件。所以,请当心使用root账号。数据库
/bincentos
这里存放了标准的(或者说是缺省的)linux的工具,好比像“ls”、“vi”还有“more”等等。一般来讲,这个目录已经包含在你的“path”系 统变量里面了。什么意思呢?就是:当你在终端里输入ls,系统就会去/bin目录下面查找是否是有ls这个程序。
/etc
这里主要存放了系统配置方面的文件。举个例子:你安装了samba这个套件,当你想要修改samba配置文件的时候,你会发现它们(配置文件)就在/etc/samba目录下。
/dev
这里主要存放与设备(包括外设)有关的文件(unix和linux系统均把设备当成文件)。想连线打印机吗?系统就是从这个目录开始工做的。另外还有一些包括磁盘驱动、USB驱动等都放在这个目录。
/home
这里主要存放你的我的数据。具体每一个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每一个用户都有本身的用户目录,位置为:/home/用户名。固然,root用户除外。/tmp
这是临时目录。对于某些程序来讲,有些文件被用了一次两次以后,就不会再被用到,像这样的文件就放在这里。有些linux系统会按期自动对这个目录进行清理,所以,千万不要把重要的数据放在这里。/usr
在这个目录下,你能够找到那些不适合放在/bin或/etc目录下的额外的工具。好比像游戏阿,一些打印工具拉等等。/usr目录包含了许多子目录: /usr/bin目录用于存放程序;/usr/share用于存放一些共享的数据,好比音乐文件或者图标等等;/usr/lib目录用于存放那些不能直接 运行的,但倒是许多程序运行所必需的一些函数库文件。你的软件包管理器(应该是“新立得”吧)会自动帮你管理好/usr目录的。/opt
这里主要存放那些可选的程序。你想尝试最新的firefox测试版吗?那就装到/opt目录下吧,这样,当你尝试完,想删掉firefox的时候,你就可 以直接删除它,而不影响系统其余任何设置。安装到/opt目录下的程序,它全部的数据、库文件等等都是放在同个目录下面。
举个例子:刚才装的测试版firefox,就能够装到/opt/firefox_beta目录下,/opt/firefox_beta目录下面就包含了运 行firefox所须要的全部文件、库、数据等等。要删除firefox的时候,你只需删除/opt/firefox_beta目录便可,很是简单。
/usr/local
这里主要存放那些手动安装的软件,即不是经过“新立得”或apt-get安装的软件。它和/usr目录具备相相似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面,我想这应该是个不错的主意。
/media
有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。
其余
/usr/local 这个目录通常是用来存放用户自编译安装软件的存放目录;通常是经过源码包安装的软件,若是没有特别指定安装目录的话,通常是安装在这个目录中。这个目录下面有子目录。本身看看吧。
/usr/share 系统共用的东西存放地,好比 /usr/share/fonts 是字体目录,/usr/share/doc和/usr/share/man帮助文件。
/var/log 系统日志存放,分析日志要看这个目录的东西;
/var/spool 打印机、邮件、代理服务器等假脱机目录;
下载mysql源安装包
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
安装mysql源
yum localinstall mysql57-community-release-el7-8.noarch.rpm
检查mysql源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
[root@iZ2ze3bc56k6c8wubzxn9kZ opt]# yum repolist enabled | grep "mysql.*-community.*" mysql-connectors-community/x86_64 MySQL Connectors Community 108 mysql-tools-community/x86_64 MySQL Tools Community 90 mysql57-community/x86_64 MySQL 5.7 Community Server 347
看到这个表示安装成功
yum install mysql-community-server
systemctl start mysqld
systemctl status mysqld
[root@iZ2ze3bc56k6c8wubzxn9kZ opt]# systemctl status mysqld ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since 三 2019-05-29 15:33:36 CST; 18s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 19832 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS) Process: 19759 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 19837 (mysqld) CGroup: /system.slice/mysqld.service └─19837 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid 5月 29 15:33:31 iZ2ze3bc56k6c8wubzxn9kZ systemd[1]: Starting MySQL Server... 5月 29 15:33:36 iZ2ze3bc56k6c8wubzxn9kZ systemd[1]: Started MySQL Server.
systemctl enable mysqld systemctl daemon-reload
grep 'temporary password' /var/log/mysqld.log mysql -u root -p set password for 'root'@'localhost'=password('MyNewPass4!');
注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,而且长度不能少于8位。不然会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
错误,以下图所示:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
经过msyql环境变量能够查看密码策略的相关信息:
show variables like '%password%'; +---------------------------------------+--------+ | Variable_name | Value | +---------------------------------------+--------+ | default_password_lifetime | 0 | | disconnect_on_expired_password | ON | | log_builtin_as_identified_by_password | OFF | | mysql_native_password_proxy_users | OFF | | old_passwords | 0 | | report_password | | | sha256_password_proxy_users | OFF | | validate_password_check_user_name | OFF | | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | MEDIUM | | validate_password_special_char_count | 1 | +---------------------------------------+--------+
修改密码策略
在/etc/my.cnf文件添加validate_password_policy配置,指定密码策略
# 选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2须要提供密码字典文件 validate_password_policy=0
若是不须要密码策略,添加my.cnf文件中添加以下配置禁用便可:
validate_password = off
从新启动mysql服务使配置生效:
systemctl restart mysqld
默认配置文件路径:
配置文件:/etc/my.cnf 日志文件:/var/log//var/log/mysqld.log 服务启动脚本:/usr/lib/systemd/system/mysqld.service socket文件:/var/run/mysqld/mysqld.pid
若是忘记root密码,则按以下操做恢复:
在[mysqld]的段中加上一句:skip-grant-tables 保存而且退出vi。
mysql -u root update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost'; flush privileges
一、建立用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
username:你将建立的用户名
host:指定该用户在哪一个主机上能够登录,若是是本地用户可用localhost,若是想让该用户能够从任意远程主机登录,可使用通配符%
password:该用户的登录密码,密码能够为空,若是为空则该用户能够不须要密码登录服务器
如:
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
二、受权用户权限
GRANT privileges ON databasename.tablename TO 'username'@'host'
privileges:用户的操做权限,如SELECT,INSERT,DELETE,UPDATE等,若是要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,若是要授予该用户对全部数据库和表的相应操做权限则可用表示,如.*
如
GRANT SELECT, INSERT,UPDATE ON test.user TO 'pig'@'%'; GRANT ALL ON *.* TO 'pig'@'%'; GRANT ALL ON maindataplus.* TO 'pig'@'%';
三、撤销用户权限
REVOKE privilege ON databasename.tablename FROM 'username'@'host'; 如 REVOKE SELECT ON *.* FROM 'pig'@'%';
四、删除用户
DROP USER 'username'@'host';
一、阿里云centos重装系统后使用ssh链接服务器报错
root@xxx.xxx.xxx.xx
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:yq14m7w9Vu5yse+A2w6MFwY2//NJUvBC6fIZCdYiomY. Please contact your system administrator. Add correct host key in /Users/wuj/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /Users/wuj/.ssh/known_hosts:11 ECDSA host key for 39.105.195.29 has changed and you have requested strict checking. Host key verification failed.
会出现这些信息是由于,第一次SSH链接时,会生成一个认证,储存在客户端(也就是用SSH连线其余电脑的那个,本身操做的那个)中的known_hosts,可是若是服务器验证过了,认证资讯固然也会更改,服务器端与客户端不一样时,就会跳出错误啦~所以,只要把电脑中的认证资讯删除,连线时从新生成,就一切完美啦~要删除很简单,只要在客户端输入一个指令
ssh-keygen -R +输入服务器的IP
接下来再次链接一次,会出现
Are you sure you want to continue connecting (yes/no)?
输入yes, 就完成链接啦!同时,新的认证也生成了
二、mysql远程客户端没法链接服务器
2003 - Can't connect to MySQL server on 'xxx.xxx.xxx' (60 "Operation timed out")
网上查到说是防火墙的问题,可是将防火墙关闭后仍是不行,这里说下个人问题及解决方式,经过关闭防火墙以及配置防火墙都没法解决该问题,最后了解到阿里云的安全组,
在阿里云添加安全组规则,增长端口3306/3306,受权对象 0.0.0.0/0就能够访问了
除此以外 ,还有几种其余查找问题的方式