史上最全的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. 如何停止服务器:
史上最全的ubuntu服务器搭建环境教程~~~相关推荐
- 台式计算机软件安装的完整过程,台式电脑怎么自己动手组装 史上最全的组装电脑详细图文教程...
上面没有介绍到硬盘安装,这里简单介绍下,硬盘安装也是非常简单的.硬盘上有2个接口,一个接口需要用数据线,将硬盘和主板上的SATA3.0接口连接,用于硬盘与主板之间数据传输,另外还需要将电源上的一个扁平 ...
- 史上最详细阿里云服务器搭建及域名申请攻略
摘要:本文是用阿里云虚拟主机搭建服务器和测试的攻略,如果你想要的服务器是用来做:个人网站.微信开发.接口开发.小型数据库.毕业设计,那么你应该是找对了. 本文包含:阿里云虚拟主机搭建.万网域名申请和解 ...
- 史上最全的WebRTC服务器技术选型分析
想学更多的WebRTC知识,请关注WebRTC中文社区 在上一篇文章里我们介绍了我们介绍了MCU和SFU的优缺点,webRTC通信方案SFU和MCU的区别? 下面就来探讨下常见的SFU开源解决方案,当 ...
- 史上最全阿里云服务器上Docker部署Springboot项目 实战 每一步都带详细图解!!!
在学习编程的时候,我们都会想,该怎么把自己写出来的项目和创意分享给大家勒.直接给代码吗?平常人看不懂,环境还需要一大堆. 那么部署到服务器上,让人能够直接访问,我想这应该是最棒的方式了吧. 使用Doc ...
- 史上最全的nexus私服搭建全流程
序言 maven私服类似.net中的nuget包服务器 官网/版本收费 首先要吐槽官网慢的一比,下载不下来. 地址:https://www.sonatype.com/ 下载地址:https://www ...
- 史上最全的maven pom.xml文件教程详解
<project xmlns=http://maven.apache.org/POM/4.0.0 xmlns:xsi=http://www.w3.org/2001/XMLSchema-insta ...
- 计算机主板用户可以自己安装的是,台式电脑怎么自己动手组装 史上最全的组装电脑详细图文教程...
三.i3独显台式电脑组装教程全过程 大致了解主机硬件之后,接下来我们开始正式进入装机过程.装机前需要先把硬件都拆好,然后准备安装.装机前最好洗洗手,先去掉手上的静电,此外在安装电脑硬件的时候,不要用手 ...
- 史上最全的微信开放平台对接教程(附完整源代码,Github开源)
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction 因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试 ...
- 史上最全最新微信小程序自动化教程
背景 微信小程序作为现在流行的一种应用载体,很多小伙伴都有对其做自动化测试的需求,由于腾讯系QQ.微信等是基于腾讯自研X5内核,不是谷歌原生webview,所以调试会有些许差异(现在很多app产品也开 ...
最新文章
- Static 作用探讨
- 编程之美3.2 电话号码对应英语字母
- Halcon初学者知识 【11】自定义算子和应用实例
- SharePoint 2010 产品六大功能模块
- linux 下mysql安装配置管理以及优化
- FastDFS简介和安装
- sqlserver大数据表操作慢_架构师必看!操作日志系统搭建秘技
- 在Ubuntu下设置笔记本外接显示器(双显示器)
- mybatis批量插入数据到Oracle中的两种方式
- linux转换大小写的脚本代码,文件名大小写转换的shell脚本
- 一年之后 重温旧“梦”
- iOS-更新CocoaPods出现错误 提示重复文件
- 获取谷歌浏览器缓存视频方法
- 小米笔记本linux无线网失效,小米笔记本无线网络打不开怎么办
- 机器学习学习笔记(3)——量纲与无量纲,标准化、归一化、正则化
- PettingZoo:多智能体游戏环境库入门
- 解决新版chrome浏览器SameSite属性cookie拦截问题
- ASPX一句话及一句话客户端
- 如何快速的转发别人的CSDN博客(转载)
- docker导入镜像报错:open /var/lib/docker/tmp/docker-import-970689518/bin/json: no such file or