史上最全的ubuntu服务器搭建环境教程~~~

ubuntu服务器搭建环境~~~

1. 先安装xshell:远程服务器连接(取代直接在浏览器 上 访问)

2. 安装xftp(ftp文件传输)直接双击红色圈圈即可


3. 安装mysql数据库:


指令:sudo apt-get update

           sudo apt-get install mysql-server mysql-client

判断是否已经安装成功:sudo netstat -tap | grep mysql

(如果发现数据库已经在监听某个端口了,说明已经安装成功)


4. mysql用户操作(新建用户,权限分配,远程登录)

        介绍:

1.权限表

MYSQL是一个多用户的数据库,MYSQL的用户可以分为两大类:

(1)       超级管理员用户(root),拥有全部权限

(2)       普通用户,由root创建,普通用户只拥有root所分配的权限

1.1 权限表的位置

数据库:mysql

与权限相关的数据表:user,db,host,tables_priv,columns_priv,procs_priv等

1.2 user表

User表存储了:

(1)用户的信息:hots(用户所在的主机),user(用户名),password(密码)

(2)用户的权限信息:_priv

(3)安全性相关的信息:ssl_,x509,记录用户登录的验证操作等

(4)与资源分配相关的信息:max_,

    max_questions表示用户在一个小时内最多可以进行的查询次数。

    max_updates表示用户在一个小时内最多可以进行的更新次数,也包括增加数据、删除数据。

    Max_connections:表示用户最多可以建立的连接数

1.2.1 user表的内容

(1)host列

    Localhost表示本机的用户或者超级管理员

    %表示任何主机上的root用户

        说明:_priv权限是全局权限,不受数据库的范围限制

1.3 DB表

(1)与用户相关的字段:host(用户所在的主机),user(用户名),

(2)与权限相关的字段:_priv,DB字段规定了_priv权限的有效范围。

1.4 host表

(1)与用户相关的字段:host(用户所在的主机)

(2)与权限相关的字段:_priv,DB字段规定了_priv权限的有效范围。

说明:

(1)       记录主机上的用户对数据库拥有的权限,侧重点在主机,而不在用户,例如假设select_priv=Y,那个这个主机上的所有数据库用户都拥有select权限。

(2)       Host表的优先级大于db表,如果db表规定这个用户没有权限,但是host表规定了这台主机的用户有权限,那么db的这个用户也是拥有权限的。

1.5 tables_priv表

设定了用户对某个表拥有的权限,该表记录了用户的信息,以及某个表的权限信息table_priv(select ,lnsert,alter等等),以及表上的某个列的权限信息column_priv。

1.6 column_priv

记录某用户对某表的某个列所拥有的权限。

1.7procs_priv 表

    规定了用户关于存储过程及存储函数的操作权限,主要字段:proc_priv



2. 创建数据库用户

 

2.1 创建普通用户

2.1.1 CREATE USER

CREATE USER ‘用户名称’ [@’主机名称’]

例:CREATE USER 'user1';

验证是否创建成功:

mysql> SELECT user FROM mysql.user;(也可先use mysql;再select user from user;下面同理)

说明:使用CREATE USER来创建的用户,均无任何权限,user表的权限字段的值均为N

 

(1)创建带有主机名的用户

CREATE USER ‘用户名称’ [@’主机名称’] 

CREATE USER 'user2' @'localhost';

 mysql> create user 'admin'@localhost;

mysql>select user,host from user;

说明:host字段的%表示不受任何主机的限制

mysql> create user 'admin'@'%';

 

(2)创建带密码的用户

CREATE USER 'user3' @'localhost'  [INDENTIFIED BY ‘用户密码’];

eg:

CREATE USER 'user3' @'localhost' IDENTIFIED BY '123333';

验证:

mysql> SELECT user,authentication_string,host FROM user;(mysql5.7的password字段变成了authentication_string)


注意:密码是哈希码的形式显示的

 

 

2.1.2 使用GRANT来创建用户,以及授予权限

GRANT是用来给用户授权的,但是也可以用来创建用户,GRANT在给用户进行授权的时候,如果用户是不存在的,那么GRANT会自动创建这个用户,然后再给这个用户进行授权。

 

(1)添加权限

 

grant 权限 on 数据库.表 to '用户名'@'登录主机'  [INDENTIFIED BY ‘用户密码’];

 

权限: select ,update,delete,insert(表数据)、create,alert,drop(表结构)、references(外键)、create temporary tables(创建临时表)、index(操作索引)、create view,show view(视图)、create routine,alert routine,execute(存储过程)、all,all privileges(所有权限)

数据库:数据库名或者*(所有数据库)

表:表名或者*(某数据库下所有表),*.*表示所有数据库的所有表

主机:主机名或者%(任何其他主机)

 eg:

mysql> grant all privileges on *.* to root@192.168.0.1 identified by 'root';

赋予root@192.168.0.1 使用所有数据库的权限,在主机192.168.0.1上使用root账户登录,密码为:root

mysql> grant all privileges on *.* to root@'%' identified by 'root';(表示%(任何其他主机))


例:grant select,insert,update,delete on *.* to 'jifei'@'%';

 

mysql>GRANT SELECT ON *.* TO 'user4' @'localhost' IDENTIFIED BY '123333';



 

(2) 为用户授予指定数据库、指定表、指定列的权限:

GRANT UPDATE(cid,cname) ON mysqlpart2.custom TO 'user3'@'localhost';

 

授权成功后,可以在以下表中查看到授权信息:

数据库: mysql » 表: tables_priv "Table privileges"

数据库: mysql » 表: columns_priv "Column privileges"

 

(3)用户权限表

位置:数据库: information_schema »表: USER_PRIVILEGES

 

表的说明:

GRANTEE:授权者

PRIVILEGE_TYPE:权限名称

 

用户表:数据库: mysql »表: user "Users and global privileges"

说明:user表中,”_priv”的值域USER_PRIVILEGES表的PRIVILEGE_TYPE的值是一一对应的。

 

(4)权限的层级关系

①权限的层级关系,就是指权限的适用范围。

②权限的最高层级是全局级,所谓全局级就是可以在任何数据库的任何数据表上进行操作。

③数据库级:只能在某个数据库上进行操作。

④表级:权限信息所在位置:数据库: mysql »表: tables_priv "Table privileges"

⑤列级:权限信息所在位置:数据库: mysql »表: columns_priv "Column privileges"

⑥子程序级:权限信息所在位置:数据库: mysql »表: procs_priv "Procedure privileges"

 

 

(5)撤销权限

 

REVOKE 权限 ON 数据库.表 FROM  '用户名'@'登录主机;

说明:赋权与撤销权限的区别,就是REVOKE是将to改为from

 

例:revoke all on *.* from  ‘jifei’  @’%’;

 

REVOKE UPDATE(cid,cname) ON mysqlpart2.custom FROM 'user3'@'localhost';

 

(6) 查看权限

 

SHOW GRANTS;//自己

SHOW GRANTS FOR  用户名称@主机名称;

 

例:

mysql>show grants;

mysql>show grants for admin@localhost


说明:所有SHOW关键字后面的词都是复数,所有CREATE关键字后面的词都是单数

 

通过mysql.columns_priv表来查看权限:

SELECT * FROM mysql.columns_priv WHERE user='user3' AND host='localhost';

mysql> SELECT * FROM mysql.columns_priv WHERE user='user3' AND host='localhost';


2.1.3 关于以直接向user表插入记录的方式来创建用户

可以使用INSERT的方式,直接向user表插入记录,以此来创建用户,但是因为user表的字段很多,而且全部字段均不允许为空,这就需要为每一个列赋值,所以不推荐使用这种方式来创建用户。

 

2.1.4 CREATE USER 与 GRANT 两种方式创建用户的区别

(1)CREATE USER 创建用户的优点:语法简单

(2)CREATE USER 创建用户的不足:用户无权限

(3)GRANT 创建用户的优势:创建的用户有权限

(4)GRANT 创建用户的不足:语法较CREATE USER 繁琐

 

3. 删除MYSQL的用户

 

delete from mysql.user where user='用户名称' and host='主机名称';

 

例:DELETE FROM mysql.user WHERE user='user3' AND host='localhost';

 

删除后使用:FLUSH PRIVILEGES 来刷新权限

 

说明:

使用DELETET删除用户后,必须使用FLUSH PRIVILEGES 来刷新权限,否则将无法继续创建用户名与已删用户的用户名相同的用户,即使在user表中看不到已删除的用户,如果不刷新权限,也是无法再新建的。

 

例:

删除用户user3:

mysql> DELETE FROM mysql.user WHERE user='user3' AND host='localhost';

Query OK, 1 row affected (0.00 sec)

 

查看用户表,user3已删除成功:

mysql> select user from mysql.user;

+-------+

| user  |

+-------+

| user1 |

| root  |

| root  |

|       |

| pma   |

| root  |

| user2 |

| user4 |

+-------+

8 rows in set (0.00 sec)

 

创建用户user3失败:

mysql> CREATE USER 'user3' @'localhost' IDENTIFIED BY 'pwd';

ERROR 1396 (HY000): Operation CREATE USER failed for 'user3'@'localhost'

 

刷新权限:

FLUSH PRIVILEGES;

 

再次创建用户,成功:

mysql> CREATE USER 'user3' @'localhost' IDENTIFIED BY 'pwd';

Query OK, 0 rows affected (0.00 sec)

 

4. 修改用户密码:

 

UPDATE mysql.user SET password=PASSWORD('新密码') WHERE user='用户名

[AND host=’主机名称’]';

UPDATE mysql.user SET password=PASSWORD('111111') WHERE user='root';

 

注意:

(1)如果不加WHERE 条件,则会把所有用户的密码都修改为’新密码’

(2)密码修改完成后,需要进行权限刷新操作才能生效,FLUSH PRIVILEGES;

 

例:

UPDATE mysql.user SET password=PASSWORD('111') WHERE user='user1';

 

 

(1)修改密码的权限

ROOT用户可以修改自己的密码,也可以修改其他用户的密码

其他用户只能修改自己的密码

 

(2)PASSWORD函数

用于把密码明文进行加密,所得到的密码为原密码的哈希值。

例:

mysql> SELECT PASSWORD('111');

+-------------------------------------------+

| PASSWORD('111')                           |

+-------------------------------------------+

| *832EB84CB764129D05D498ED9CA7E5CE9B8F83EB |

+-------------------------------------------+

1 row in set (0.07 sec)

 

(3)ROOT用户、普通用户修改自己的密码

SET PASSWORD=PASSWORD(‘新密码’);

 

(4)ROOT 用户为其他用户修改密码:

SET PASSWORD FOR ‘用户名称’  @’主机名称’  = password(‘新密码’);

 

例,以下两种修改密码的方式结果相同:

SET PASSWORD FOR 'user1' @'%'=PASSWORD('111');

UPDATE mysql.user SET password=PASSWORD('111') WHERE user='user1';



授权之后则是本篇文章的重点了:(搞了我大半天,可以的话点个赞)

如何远程连接数据库:(再进行连接数据库时候,请保证你已经完成下面的步骤)

1. 已经授权了,grant all privileges on *.* to 'username'@'%' identified by 'password';

2. 防火墙已经关闭(具体如何关闭自行网上搜)

3. 配置/etc/mysql/mysql.conf.d/mysqld.cnf文件并重启。具体步骤如下:

1)sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf(记住是这个文件,而不是这个路径/etc/mysql/my.cn

2)将里面    bind-address = 127.0.0.1这句注视掉(即在前面加上#即可)(127.0.0.1表示只允许本机访问,所以要把它注释掉)

3)wq!退出

4)重启:sudo service mysql restart



接下来就是redis的安装了~

redis安装方法介绍:编译安装:

1. 保证网络畅通,选定好下载工作路径,执行以下命令下载redis-3.2.6:

sudo wget http://download.redis.io/releases/redis-3.2.6.tar.gz

2. 解压该文件:

sudo tar -zxvf redis-3.2.6.tar.gz

3. 会在当前目录下生成文件夹redis-3.2.6(可以用ls来查询),我把它移动到了/usr/redis目录下: 

  ubuntu@VM-0-16-ubuntu:/usr/redis$ mv redis-3.2.6/ /usr/redis/

4. 如果没有安装gcc,需要先安装:

sudo apt-get install gcc

5. 进入到redis-3.2.6目录下(cd /redis-3.2.6/),依次执行下面两条命令:

cd ./redis-3.2.6/

sudo make

sudo make install

6. 现在进入先前解压后得到的文件夹(我的在/usr/redis),复制配置文件redis.conf到/etc/redis/下

cd ~

cd /usr/redis/redis-3.2.6

cp redis.conf /etc/redis/

7. 用vim命令编辑该文件,将“daemonize no”修改为“daemonize yes”,即设置成作为后台进程运行,修改完成后保存退出。 

cd ~

cd /etc/redis/

sudo vim redis.conf

8. 进入到/usr/local/bin目录下,执行命令:(默认端口6379)

cd ~

sudo redis-server /etc/redis/

redis.confredis-cli -p 6379

9.  然后执行命令ping,若输出为pong,则证明服务成功启动。 

10. 执行quit命令退出,现在可以通过下面的命令查看到该进程:ps -ef|grep redis

11. 如何停止服务器:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache工具包方法——Hex.encodeHexString(byte[] data)源码浅析

【2019-07-02 注:标题是Hex.encodeHexString(byte[] data) 的源码解析,但在实际测试过程中,改了方法名称,内部实现还是完全一样的。】 最近正在研究加密的相关方法和思想,有时候会用到byte类型的数组密钥或者密文&…

计算机考试400,400作文:电脑考试

400作文:电脑考试今天下午第三节课是大家最爱的电脑课,第三节课的上课铃还没敲响,大家就早早来到电脑室门口,拍好整齐的队伍,等待电脑金老师来带领我们进电脑室。终于,金老师面带微笑从办公室走到了我们这边…

史上最容易理解的暴力递归和动态规划~~

史上最容易理解的暴力递归和动态规划~~介绍递归和动态规划暴力递归:1, 把问题转化为规模缩小了的同类问题的子问题2, 有明确的不需要继续进行递归的条件(base case)3, 有当得到了子问题的结果之后的决策过程 4, 不记录…

英雄联盟与人生奋斗的类比讨论

自从去年毕业之后就已经很少玩英雄联盟了,最近半年更是一次都没碰过这个游戏了。 更新还是异常的频繁,打斗还是异常的激烈,比赛还是异常的水(S系列中国队的表现)。 我今天并不是想追忆曾经的激情,而是想把…

如何最好手机硬件测试软件,手机硬件出现故障?简单几部教你自己动手检测! _手机资讯...

很多人在使用手机时,经常遇到例如屏幕触摸不准、距离感应器不反应、手机按键失灵等类似问题,有的情况是系统故障,但大多数是属于硬件故障,那如何判定呢?其实很多安卓手机自带的有硬件检测工具,下面就以小米…

qq传输文件的软件测试点,超强新功能 QQ传文件夹测试版抢先试用

QQ传文件夹测试版试用(1)中关村在线软件事业部消息 腾讯体验中心今日(7月29日)发布了一个新的体验项目“QQ2009传文件夹测试版”。QQ的传文件功能,相信多数用户都使用过。在之前的版本中,很多用户反馈希望增加传文件夹的功能,方便多文件的传输…

黑色玫瑰服务器延迟高,LOL:含金量最高的服务器,黑色玫瑰垫底,最后一个钻石起步!...

原标题:LOL:含金量最高的服务器,黑色玫瑰垫底,最后一个钻石起步!黑色玫瑰。它是英雄联盟中非常特别的一个大区。这个大区是中间位置,电十,却是比电二高手还要多的地方。因为这个大区小姐姐特别的…

Java网络编程————UDP实现ThinkPad S5网络唤醒

功能要求:通过Java程序实现ThinkPad S5 笔记本网络唤醒 必备知识: 一、定义:网络唤醒,通过局域网、互联网或通讯网络,以有线网卡的形式,向目标电脑发送魔法包(Magic Packet),让电脑自动开机。…

奥特曼系列ol服务器名称带怪兽,《奥特曼系列ol》怪兽图鉴 怪兽阵容

《奥特曼系列ol》这款游戏中的怪兽图鉴也是很多玩家非常关注的问题之一哦,随着游戏的不断的更新,游戏也是加入了不少全新的玩法,一定让很多玩家觉得有些迷惑吧。下面小编为大家带来《奥特曼系列ol》怪兽图鉴以及怪兽阵容,希望大家…

继上一篇博客--javaweb通过接口来实现多个文件压缩和下载(包括单文件下载,多文件批量下载)

通过动态分配地址来提升javaweb文件下载接口的其兼容性和可扩展性: (上篇博文地址:https://blog.csdn.net/weixin_37766296/article/details/80044000)log4j.properties 文件: log4j.rootLogger debug,stdout,D,Elog4…

服务器主机启动不显示,服务器主机不启动怎么回事

服务器主机不启动怎么回事 内容精选换一换本文介绍了主机迁移服务SMS各特性版本的功能发布和对应的文档动态,新特性将在各个区域(Region)陆续发布,欢迎体验。源端服务器数据收集声明。源端服务器上安装和配置完迁移Agent后,迁移Agent会把源端…

最简明扼要的 Systemd 教程,只需十分钟

systemctl常用命令介绍~~~Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。 Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。启动及服务大多数主流发行版要…

Java常用设计模式————抽象工厂模式

简介 每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。 与工厂方法模式的区别 工厂方法模式针对的是一个产品等级结构,而抽象工厂模式针对的是多个产品等级结构,因此抽象工厂模式在结构上要比工厂方法模式更加复杂和抽象,也更…

CSS新手入门教程~~~~

CSS新手入门教程~~~~CSS简介:什么是 CSS? CSS 指层叠样式表 (Cascading Style Sheets)样式定义如何显示 HTML 元素样式通常存储在样式表中把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题外部样式表可以极大提高工作效率外部样式表通常存储在…

Docker必备知识整理

Docker简介 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 Docker是用Go语言…

Exception和Error深入分析~~~

Exception和Error深入分析~~~Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。 Exception 和 Erro…

Java常用设计模式————原型模式(二)之深拷贝与浅拷贝

引言 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可…

Java面试宝典————基础篇

参考原文:《Java面试题全集(上)》 1.Java中的基本数据类型有哪些? 类型:byte short int long float double boolean char 字节:1 2 4 8 4 8 1 2 2.面向…

Git初学札记(零)————EGIT完成Eclipse到GitHub一条龙

eclipse安装Egit插件 首先我们要找到所需的egit插件的url更新地址。百度一大堆,但是我还是希望自己去寻找。 打开Eclipse Downloads官网,在页面底部直接输入“egit”关键字,并直接点击第一条搜索到的结果。然后点击Downloads标签页&#xff0…

Eclipse生成SSH传输密钥并实现GitHub的SSH代码提交

生成公私密钥 打开eclipse首选项完成如下操作:保存密钥:这里注意,博主之前已经生成过密钥了,因此这里只是演示截图,如果此时点击保存,会弹出“是否覆盖”提示框。 其中,id_rsa代表非对称加密算法…