因为项目需要 需要用到mysql5.7 便在网上找安装mysql5.7的方法 。。。。
之前都是下载了传到虚拟机下安装 于是这次 便尝试其他方法
1
如果是直接在Linux中下载,则使用:
wget http://dev.mysql.com/get/mysql57-community-release-el7-5.noarch.rpm
以为是安装的最小化的cenos7 故wget命令提示找不到 于是( yum -y install wget)
2 本地安装YUM源
yum localinstall mysql57-community-release-el7-8.noarch.rpm
3、安装MySQL
# yum install mysql-community-server
4、启动MySQL并加入开机启动- # systemctl start mysqld
- # systemctl enable mysqld
- # systemctl daemon-reload
4.启动MySQL服务
systemctl start mysqld.service
MySQL安装完成之后,在/var/log/mysqld.log文件中为root用户生成了一个随机的默认密码。可以通过以下方式查看,之后可登陆MySQL进行修改:
#grep 'temporary password' /var/log/mysqld.log
登录 mysql -uroot -p
然后需要马上修改密码 You must reset your password using ALTER USER statement before executing this statement.
这里需要注意:MySQL5.7默认的密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误。
alter user 'root'@'localhost' identified by 'xxxxxxx';
flush privileges;
6、添加远程登陆用户
在我们使用mysql数据库时,有时我们的程序与数据库不在同一机器上,这时我们需要远程访问数据库。缺省状态下,mysql的用户没有远程访问的权限。
以下语句赋予root用户从任意主机访问MySQL服务器:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
注:'%'代表任意地址,也可以指定IP
提示 Query OK, 0 rows affected, 1 warning (0.00 sec)
下载安装的是最新版的mysql5.7.x版本,默认是开启了 only_full_group_by
模式的,但开启这个模式后,原先的 group by
语句就报错,然后又把它移除了。
一旦开启 only_full_group_by
,感觉,group by
将变成和 distinct
一样,只能获取受到其影响的字段信息,无法和其他未受其影响的字段共存,这样,group by
的功能将变得十分狭窄了
only_full_group_by
模式开启比较好。
因为在 mysql
中有一个函数: any_value(field)
允许,非分组字段的出现(和关闭 only_full_group_by
模式有相同效果)。
具体出错提示:
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
1、查看sql_mode
01
|
select @@global.sql_mode;
|
查询出来的值为:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
2、去掉ONLY_FULL_GROUP_BY,重新设置值。
01
|
set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
|
3、上面是改变了全局sql_mode,对于新建的数据库有效。对于已存在的数据库,则需要在对应的数据下执行:
1
|
set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
|
先查看默认的sql_mode
# set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
#select @@global.sql_mode;
以前都用service命令管理mysql,现在liunx系统升级了,又有了新的更好的方法管理系统进程,现在我们来学习如何用systemctl命令管理mysql。
Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。
Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。
在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程,但并非总是如此
注意: 因为项目转移时 ,
mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by
sql_mode为了统一 就设置了之前运维弄的那种sql mode
(ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION) 新安装的是这个(默认的sessionmode 与global.sql_mode)
运维弄的是这个 : STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION、
于是尝试改变sql_mode;
set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION ';
set @@SESSION.sql_mode ='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION ';
注意:我们这里设置的sql_mode都是session级别的。另外,可以直接修改my.ini文件,找到sql_mode,然后设置新的模式即可!
例如:
vi /etc/my.cnf
在[mysqld]下面添加如下列:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
于是改变了数据库的sqlmode
启动mysql服务
systemctl start mysqld.service
- 1
停止mysql服务
systemctl stop mysqld.service
- 1
重启mysql服务
systemctl restart mysqld.service
- 1
查看mysql服务当前状态
systemctl status mysqld.service
3306端口放行
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
将该设置添加到防火墙的规则中
/etc/rc.d/init.d/iptables save
忘记密码解决
# 最简单最粗暴的方法 找到mysql的配置文件直接编辑
vim /etc/my.cnf
# 在 [mysqld] 中加上一行跳过权限限制
skip-
grant
-tables
# 保存退出 重启mysql服务
service mysqld restart
# 用户登录
mysql -uroot -p (直接点击回车,密码为空)
# 选择数据库
use mysql;
# 但是在5.7版本中不存在
password
字段,所有我们要用以下修改进行重置密码
update
user
set
authentication_string=
password
(
'new password'
)
where
user
=
'root'
;
# 刷新权限
flush
privileges
;
# 退出mysql
quit;
# 将最开始修改的配置文件my.cnf中的skip-
grant
-tables删除 重启mysql
service mysqld restart
1.安装jdk
a.检测是否安装了jdk 运行java -version
b.若有需要将其卸载
c.查看安装那些jdk
rpm -qa | grep java
d.卸载
先卸载 openjdk 1.7
rpm -e --nodeps 卸载的包
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.i686
再卸载 openjdk 1.6
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686
e.安装jdk
上传jdk 通过ftp软件上传(上传到root目录下)
在 /usr/local创建一个 java目录
mkdir java
将上传的jdk复制到 java目录下
cp /root/jdk.xxxxx.tar /usr/local/java
将其解压
tar -xvf jdk.xxx.tar
f.安装依赖
yum install glibc.i686
g.配置环境变量
编辑 vi /etc/profile
在文件最后添加一下信息
#set java environment
JAVA_HOME=/usr/local/java/jdk1.7.0_72
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出 (wq)
source /etc/profile 使更改的配置立即生效
输入java -version 显示以下表明成功了 java -version
····Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
···Java HotSpot(TM) Client VM (build 24.72-b04, mixed mode)
3.安装tomcat
a.在/usr/local/ 创建tomcat目录
b.复制tomcat 到 /usr/local/tomcat
c.解压tomcat
d.启动tomcat 进入 bin
方式1:
sh startup.sh
方式2:
./startup.sh
e.开启端口号 8080
8080端口放行
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
将该设置添加到防火墙的规则中
/etc/rc.d/init.d/iptables save
注意:
查看日志文件
tail -f logs/catalina.out
退出 ctrl+c
二、firewalld
Centos7默认安装了firewalld,如果没有安装的话,可以使用 yum install firewalld firewalld-config进行安装。
1.启动防火墙
systemctl start firewalld
2.禁用防火墙
systemctl stop firewalld
3.设置开机启动
systemctl enable firewalld
4.停止并禁用开机启动
sytemctl disable firewalld
5.重启防火墙
firewall-cmd --reload
6.查看状态
systemctl status firewalld或者 firewall-cmd --state
7.查看版本
firewall-cmd --version
8.查看帮助
firewall-cmd --help
9.查看区域信息
firewall-cmd --get-active-zones
10.查看指定接口所属区域信息
firewall-cmd --get-zone-of-interface=eth0
11.拒绝所有包
firewall-cmd --panic-on
12.取消拒绝状态
firewall-cmd --panic-off
13.查看是否拒绝
firewall-cmd --query-panic
14.将接口添加到区域(默认接口都在public)
firewall-cmd --zone=public --add-interface=eth0(永久生效再加上 --permanent 然后reload防火墙)
15.设置默认接口区域
firewall-cmd --set-default-zone=public(立即生效,无需重启)
16.更新防火墙规则
firewall-cmd --reload或firewall-cmd --complete-reload(两者的区别就是第一个无需断开连接,就是firewalld特性之一动态 添加规则,第二个需要断开连接,类似重启服务)
17.查看指定区域所有打开的端口
firewall-cmd --zone=public --list-ports
18.在指定区域打开端口(记得重启防火墙)
firewall-cmd --zone=public --add-port=80/tcp(永久生效再加上 --permanent)
说明:
–zone 作用域
–add-port=8080/tcp 添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效