http://www.linuxidc.com/Linux/2016-05/131701.htm 安装虚拟机
账号:zxy
密码:zxy123456
CentOS 64位Vmware Workstation
账号:dev 密码:空格
虚拟机:
SecureCRT连接虚拟机
安装JVM
下载:
cd /usr/local/src
安装(rpm安装方式jdk默认安装在/usr/java下面):
配置环境变量:
[root@localhost local]# vi /etc/profile
添加以下代码
#setup JAVA JDK
JAVA_HOME=/usr/java/jdk1.8.0_101/
JAVA_BIN=/usr/java/jdk1.8.0_101/bin
JRE_HOME=/usr/java/jdk1.8.0_101/jre
PATH=$PATH:$JAVA_BIN:$JRE_HOME/bin
CLASSPATH=./$JAVA_HOME/lib.tools.jar:$JAVA_HOME/lib/dt.jar
export JAVA_HOME
export JAVA_BIN
export JRE_HOME
export PATH
exportCLASSPATH
保存文件使其生效:
[root@localhost local]# source /etc/profile
检查是否配置正确:
[root@localhostlocal]# java -version
java version"1.8.0_151"
Java(TM) SE RuntimeEnvironment (build 1.8.0_151-b12)
Java HotSpot(TM)64-Bit Server VM (build 25.151-b12, mixed mode)
安装 导入导出 lrzsz
/etc/yum.repos.d
共享目录
cd /mnt/hgfs
Centos6.5
防火墙:iptables
网卡名称:
Centos 7
防火墙:
网卡名称:
安装Centos7 http://www.jb51.net/article/97386.htm
CentOS7 系统目录详解 <http://blog.csdn.net/longxu0872/article/details/71168340>
账号:root 密码:root
查询ip地址 ip addr
yum缺失:
查看当前ens33的配置是否正确(网络管理,ifconfig命令配置的网卡信息)
更新yum
下载插件:
开始操作
创建目录
安装jdk
配置环境变量
#setup JAVA JDK
JAVA_HOME=/usr/java/jdk1.8.0_151
JAVA_BIN=/usr/java/jdk1.8.0_151/bin
JRE_HOME=/usr/java/jdk1.8.0_151/jre
PATH=$PATH:$JAVA_BIN:$JRE_HOME/bin
CLASSPATH=.:/usr/java/jdk1.8.0_151/lib/tools.jar:/usr/java/jdk1.8.0_151/lib/dt.jar
export JAVA_HOME
export JAVA_BIN
export JRE_HOME
export PATH
export CLASSPATH
保存文件使其生效
[root@localhost /]#source /etc/profile
检查是否正确
安装tomcat
sz上传tomcat安装包
解压安装包
zip命令
解压:unzip apache-tomcat-8.5.15
压缩:zip apache-tomcat-8.5.15.zip apache-tomcat-8.5.15
修改名称为tomcat8088
配置环境变量 vi /etc/profile
是环境变量生效 source/etc/profile
给root设置权限 chmod u+x *.sh
今天在Linux上启动Tomcat,结果弹出:-bash: ./startup.sh:Permission denied 的提示。
这是因为用户没有权限,而导致无法执行。用命令chmod 修改一下bin目录下的.sh权限就可以了。
chmod u+x *.sh
这里的u 这里指文件所有者,+x 添加可执行权限,*.sh表示所有的sh文件。
启动tomcat(/root/service/tomcat8088/bin) ./startup.sh
6 向防火墙添加8080端口(centos7以上都是firewall,iptables的升级版)
①查看firewall状态(runing表示在运行,not runing表示没运行,若是没运行用systemctl start firewalld 启动)
[root@iZt4n6h3u4k407nnijel5xZ~]# firewall-cmd --state
running
[root@iZt4n6h3u4k407nnijel5xZ~]#
②添加8080端口
[root@iZt4n6h3u4k407nnijel5xZ~]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
success
[root@iZt4n6h3u4k407nnijel5xZ~]#
③重新加载firewall
[root@iZt4n6h3u4k407nnijel5xZ~]# firewall-cmd --reload
success
[root@iZt4n6h3u4k407nnijel5xZ~]#
7 测试tomcat在服务端是否能访问
[root@iZt4n6h3u4k407nnijel5xZ/]# curl http://localhost:8080
如果控制台输出一堆html代码表示服务端能访问
8 若是用浏览器能正常访问,则表示tomcat没什么问题了。
安装mysql
安装mongodb
下载:
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.9.tgz
解压
tar zxvf mongodb-linux-x86_64-3.2.9.tgz
touch能够新建文件,mkdir用来新建文件夹。rm用来删除文件或文件夹。
安装装备:
创建数据库文件夹与日志文件、配置文件:
mkdir data 数据库文件夹
touch mongodb.log日志文件
touch mongodb.conf 配置文件
配置环境变量
是环境变量起作用
命令行中运行mongodb服务
./mongodb/bin/mongod-dbpath=/root/DB/mongodb/data/db -logpath=/root/DB/mongodb/logs/mongodb.logs
/data/db是 MongoDB 默认的启动的数据库路径(--dbpath)。(注意:如果你的数据库目录不是/data/db,可以通过 --dbpath 来指定。)
MongoDB后台管理 Shell
解决上面警告
2017-12-26T04:53:54.987-0500I CONTROL [initandlisten] ** WARNING:/sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-12-26T04:53:54.987-0500I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-12-26T04:53:54.987-0500I CONTROL [initandlisten]
2017-12-26T04:53:54.987-0500I CONTROL [initandlisten] ** WARNING:/sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-12-26T04:53:54.987-0500I CONTROL [initandlisten] ** We suggest setting it to 'never'
从Centos6开始引入THP,Centos7时默认启动,用来提升内存性能。针对一些数据库,如:Orcale、MariaDB、MongoDB、VoltDB在使用时,要求关闭此功能。
因此:查询是否启用
禁用:编辑rc.local启动文件。
[root@localhost~]# vi /etc/rc.d/rc.local
增加下列内容:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
保存并退出,然后给rc.local添加可执行权限。
[root@localhost~]# chmod +x /etc/rc.d/rc.local
最后重启。
最终目录
mongodb的启动方式:
1.运行命令方式启动 缺陷:终端离线或者关闭,mongodb就会自动退出
./mongodb/bin/mongod -dbpath=/root/DB/mongodb/data/db-logpath=/root/DB/mongodb/logs/mongodb.logs
改进
2.以系统服务方式启动
3.以mongodb配置文件方式启动:
[root@localhostmongodb]# ./mongodb/bin/mongod -f mongodb.conf
配置文件内容:
# mongodb.config
#端口号 默认为27017,注意这里端口修改为9888后,要用mongo--port=9888连接,否则报错。
##port=9888
port=27017
##数据库路径(数据文件)
dbpath=/root/DB/mongodb/data/db
###日志存储位置
logpath=/root/DB/mongodb/logs/mongod.log
###错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件
logappend=true
###启动日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=false
#以守护程序的方式启用,即在后台运行
fork = true
正常:about to fork child process, waiting until serveris ready for connections.
forked process: 2022
child processstarted successfully, parent exiting
检查接口是否启动:
[root@localhostmongodb]# netstat -lanp | grep "27017"
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 2022/./mongodb/bin/
unix 2 [ ACC ] STREAM LISTENING 20874 2022/./mongodb/bin/ /tmp/mongodb-27017.sock
报错(重复启动的情况):
[root@localhost mongodb]# ./mongodb/bin/mongod -fmongodb.conf
about to fork child process, waiting until server isready for connections.
forked process: 2043
ERROR: child process failed, exited with error number48
解决报错:
[root@localhost db]# rm mongod.lock
[root@localhost mongodb]# ./mongodb/bin/mongod--repair
4.mongodb脚本方式启动:
停止mongodb:
1.
[root@localhostmongodb]# ./mongodb/bin/mongod -shutdown-dbpath=/root/DB/mongodb/data/db
killing process withpid: 2077
[root@localhostmongodb]# netstat -lanp | grep "27017"
tcp 0 0 127.0.0.1:27017 127.0.0.1:36870 TIME_WAIT -
2正确关闭mongodb,进入mongo shell
use admin
db.shutdownServer()
3.粗暴方式:
[root@localhostmongodb]# ps aux|grep mongo
root 4051 1.0 3.6 360592 36636 ? Sl 04:02 0:01 ./mongodb/bin/mongod-f mongodb.conf
root 4080 0.0 0.0 112660 968 pts/0 S+ 04:04 0:00 grep --color=auto mongo
[root@localhostmongodb]# kill -9 4051
校验是否启动:
Centos7安装netstat:yum installnet-tools
netstat -lanp | grep "27017"
[root@localhostmongodb]# netstat -lanp | grep "27017"
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 2022/./mongodb/bin/
unix 2 [ ACC ] STREAM LISTENING 20874 2022/./mongodb/bin/ /tmp/mongodb-27017.sock
上面表示启动成功。使用mongo客户端访问下数据库(mongo shell)
./mongodb/bin/mongo
打开防火墙端口:
iptables-A INPUT -p tcp -m tcp--dport 27017 -j ACCEPT
mongodb权限管理(添加管理员/普通用户)(http://www.cnblogs.com/hanyinglong/archive/2016/07/25/5704320.html#_label4)
简单介绍:MongoDB是没有默认管理员账号的,所以要添加管理员账号,在开启权限认证;
切换到admin数据库,添加的账号才是管理员账号;
用户只能在用户所在的数据库登录,包括管理员账号;
管理员可以管理所有的数据库,但是不能直接管理其他的数据库,要先在admin数据库中认证才可以,也是为了安全性考虑。
进入mongodb的shell界面后:
show dbs:展示所有数据库
use admin:创建一个admin数据库,权限管理就是使用的admin数据库,此命令也是切换数据库的命令
show collections切换到admin库之后,使用show collections查询,我们发现该数据库有system.user(用来存超级管理员)和system.version表
> showcollections
system.users
system.version
//创建管理员用户kencery
>db.createUser({user:"kencery",pwd:"kencery",customData:{description:"管理员用户"},roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
//show users和db.system.users.find()查询创建的用户
> show users
{
"_id" :"admin.kencery",
"user" : "kencery",
"db" : "admin",
"customData" : {
"description" :"管理员用户"
},
"roles" : [
{
"role" :"userAdminAnyDatabase",
"db" :"admin"
}
]
}
>db.system.users.find()
{ "_id" :"admin.kencery", "user" : "kencery","db" : "admin", "credentials" : {"SCRAM-SHA-1" : { "iterationCount" : 10000,"salt" : "OzEcokjVjOFKjfpZb8JEnA==", "storedKey": "Ed5NOYUiE01dZ1iNLWCBzfCSpDQ=", "serverKey" :"1XMZJTjj4xWPdkE0maAeytg2XCs=" } }, "customData" : {"description" : "管理员用户" }, "roles" : [ { "role": "userAdminAnyDatabase", "db" : "admin" } ] }
//开启用户权限验证,因为MongoDB默认是不开启权限验证的,在配置文件中加入auth=true
[root@localhostmongodb]# vi mongodb.conf
#是否需要验证权限
auth=true
关闭mongodb后重新启动
重启之后我们在连接数据库然后切换到admin数据库下,使用db.system.users.find()命令查看,如下图所示,则说明配置已经成功
提示信息提示我们没有对其进行授权,此时,我们输入如下命令进行授权,授权之后我们使用查询命令去查询发现已经可以查询,到这里简单权限已经设置完成
查询结果
>db.system.users.find()
{ "_id" :"admin.kencery", "user" : "kencery","db" : "admin", "credentials" : {"SCRAM-SHA-1" : { "iterationCount" : 10000,"salt" : "OzEcokjVjOFKjfpZb8JEnA==", "storedKey": "Ed5NOYUiE01dZ1iNLWCBzfCSpDQ=", "serverKey" :"1XMZJTjj4xWPdkE0maAeytg2XCs=" } }, "customData" : {"description" : "管理员用户" }, "roles" : [ { "role": "userAdminAnyDatabase", "db" : "admin" } ] }
Built-In Roles(内置角色):
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system
具体角色:
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
在kencery(超级管理员)授权之后,创建读和写的用户账号,在创建root的账号
> db.createUser({
... user:"read",
... pwd:"read",
... roles:[{role:"read",db:"logs"}]
... })
> db.createUser({
... ... user:"readwrite",
... ... pwd:"readwrite",
... ... roles:[{role:"readWrite",db:"logs"}]
... ... })
>db.createUser({user:"nouse",pwd:"nouse",customData:{description:"管理员用户"},roles:[{role:"root",db:"admin"}]})
在admin数据库中查询用户数和用户信息(db.system.users.find().pretty()和db.system.users.find().count)
mongodb常用命令:
查看数据库命令:show dbs;
查看集合命令:show collections;
切换数据库:use databaseName;
查询数据:db.集合名.find()
插入数据:db.集合名.insert({name:'test',age:1});
删除:db.test.remove();
授权:db.auth("用户名","用户密码")
Robo3T远程连接mongodb:
下面报错(是因为加了权限所以会报错):
配置文件
连接:
https://www.cnblogs.com/moxiaoan/p/5683743.html
最后剩余用户
admin表
logs数据库
runoob数据库
test数据库
基本命令:
show dbs;//查询所有数据库名字 (创建的数据库并不在数据库的列表中,需要先插入数据才能用此命令看到这个信息)
use DATABASE_NAME ;//如果数据库不存在,则创建数据库,否则切换到指定数据库
db; //查询当前数据库名字
show collections/show tables; //查询当前数据库下面的所有集合(数据库)
> show tables
test
> show dbs
admin 0.000GB
local 0.000GB
logs 0.000GB
test 0.000GB
db.COLLECTION_NAME.find(); //查询单个集合信息
db.COLLECTION_NAME.find().pretty();//以格式化的方式查询单个集合信息
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty();// 'where likes>50AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'
$gt --------greater than >
$gte ---------gt equal >=
$lt --------less than <
$lte ---------lt equal <=
$ne -----------not equal !=
$eq -------- equal =
修改数据库名字:
db.COLLECTION_NAME.insert(document); //插入数据信息,同时也是创建单个集合(表),document是JSON数据结构,所有存储在集合中的数据都是BSON格式(是一种JSON的二进制形式的存储格式,简称Bnary JSON)
修改数据信息
替换方式修改(需要原来数据的ID):
db.col.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql数据库",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
})
修改:
只更新第一条记录:
db.col.update( { "count" : { $gt : 1 } } , {$set : { "test2" : "OK"} } );
全部更新:
db.col.update( { "count" : { $gt : 3 } } , {$set : { "test2" : "OK"} },false,true );
只添加第一条:
db.col.update( { "count" : { $gt : 4 } } , {$set : { "test5" : "OK"} },true,false );
全部添加加进去:
db.col.update( { "count" : { $gt : 5 } } , {$set : { "test5" : "OK"} },true,true );
全部更新:
db.col.update( { "count" : { $gt : 15 } } , {$inc : { "count" : 1} },false,true );
只更新第一条记录:
db.col.update( { "count" : { $gt : 10 } } , {$inc : { "count" : 1} },false,false );
db.collection.update(<query>,<update>,{upsert: <boolean>, multi: <boolean>, writeConcern: <document> })参数说明
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
db.dropDatabase(); //删除数据库(库),在使用之前,先得切换到要删除的库中
db.COLLECTION_NAME.drop(); //删除集合(表)
删除数据信息
>db.col.remove({'title':'MongoDB 教程'})
WriteResult({ "nRemoved" : 2 }) # 删除了两条数据
db.COLLECTION_NAME.remove(DELETION_CRITERIA,1) //删除第一条找到的记录可以设置 justOne为 1
>db.col.remove({}) //删除所有数据
给数据库添加用户权限:
1、 进入ljc 数据库:
useljc; --ljc为数据库名称。
2、添加用户(读写权限,readOnly-->false):
db.addUser("java","java");
3、 查看一下所有的用户
db.system.users.find(); //show users
{ "_id" : ObjectId("4e02a89fb841deb5fda3e5e2"),"user" : "java", "readOnly" : fa
lse, "pwd" :"59cf7cc156874cbd35cb00869126f569" }
4、用户授权。
db.auth("java","java"); 显示为1 表示授权成功,0表示不成功。
5、 添加用户(只读权限,readOnly-->true):
db.addUser("java1","java1",true);
db.system.users.find();
{"_id" : ObjectId("4e02a89fb841deb5fda3e5e2"),"user" : "java", "readOnly" : false, "pwd" :"59cf7cc156874cbd35cb00869126f569" }
{"_id" : ObjectId("4e02aae6b841deb5fda3e5e3"),"user" : "java1", "readOnly" : true, "pwd" :"fca6bda05c87a72cce0a4a6458d1e266" }
db.createUser({user:"admin",pwd:"admin",customData:{description:"超级用户角色"},roles:[{role:"root",db:"admin"}]})
db.createUser({user:"zxy01",pwd:"123456",customData:{description:"只读管理员"},roles:[{role:"read",db:"logs,meetings"}]})
db.createUser({user:"zxy02",pwd:"123456",customData:{description:"读写管理员"},roles:[{role:"readWrite",db:"logs,meetings"}]})
6、更改密码(为已经存在的用户更改密码):
db.addUser("java","java1");
7、删除用户:
db.system.users.remove({user:"java1"});