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

2023-05-16

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. 如何停止服务器:


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 多实例启动mariadb10.6.8(源码安装)

    文章目录 多实例启动mariadb10 6 8 xff08 源码安装 xff09 1 源码安装mariadb10 6 8的情况介绍2 多实例配置2 1 创建各种配置文件2 2 创建启动脚本2 3 配置启动脚本并启动服务2 4 连接测试2 5
  • 基于tensorflow的图像处理(一)TFRecord输入数据格式

    参考 基于tensorflow的图像处理 一 TFRecord输入数据格式 云 43 社区 腾讯云 TensorFlow提供了一种统一的格式来存储数据 xff0c 这个格式就是TFRecord xff0c TFRecord文件中的数据都是通
  • RabbitMQ一对多使用

    在开发工作中 xff0c 我们使用RabbitMQ进行系统之间数据的同步 xff0c 最初使用是一对一的情况 xff0c 其实MQ也有一对多和多对多的情况 xff0c 工作实际也需要一对多 xff0c 写了小demo来试试 Applicat
  • 在Centos系统下git 遇到fatal: HTTP request failed,error: while accessing ;SSL connect error错误

    在Go项目中go get的时候遇到以下错误 src github com lib pq git error while accessing https github com lib pq info refs fatal HTTP reque
  • Gazebo学习笔记(一)

    搭建一个移动车 ctrl 43 m 进入到gazebo编辑界面 ctrl 43 m 进入到gazebo编辑界面 1 搭建一个车底盘 xff0c 选择simple shapes 的box xff0c 点击后在编辑框中释放 2 利用resize
  • ubuntu 安装openssl-devel

    需要安装openssl devel xff0c Github上的说明要用yum工具安装 xff0c 反复安装不上 xff0c 提示没有repos xff08 回购 xff09 xff0c 最后找到了方法 在Ubuntu系统里这是分开的两个
  • 1分钟教会你二进制撩妹(汉)读心术

    近些年来 xff0c 小魔发现 xff0c 对于年轻的男女而言 xff0c 一些传统的节日似乎都变成了情人节或者脱单节 xff0c 就连 光棍节 xff0c 实际上很多人都是抱着节前或者是当天脱单而过的 双11 光棍节 即将来临 xff0c
  • VLAN基础配置及Access接口、Trunk接口、Hybrid接口

    文章说明 xff1a 1 本文使用的软件是eNSP 2 退到下一层用命令quit xff0c 简写q 3 部分命令使用的是简写 和完整命令一样的作用 xff0c 按键盘上的 34 Tab 34 建可自动补全命令 用于查询的命令 xff1a
  • c++pthread多线程消费者问题

    分布式选修课上讲了多线程编程 xff0c 布置了一个生产者消费者的作业 xff0c 觉得挺有意思 xff0c 并且网络上的消费者问题多使用c语言编写 xff0c 故在此记录c 43 43 解决方法 由于是消费者线程各自计数 xff0c 故使
  • 红包动画

    lt DOCTYPE html gt lt html lang 61 34 en 34 data dpr 61 34 1 34 style 61 34 font size 32px 34 gt lt head gt lt meta char
  • Android中<xliff:g></xliff:g>的用法

    在查阅修改Android源码的过程中经常能在字符串资源中看到类似下面的标签 xff1a span class hljs tag lt span class hljs title resources span span class hljs
  • vue单文件组件的格式规范

    lt template gt lt template gt lt script gt export default name 39 39 mixins components props data return computed watch
  • Linux命令行安装weblogic12c

    Linux命令行安装weblogic12c 一 安装jdk 若已安装可跳过 1 Oracle官网下载jdk linux安装包 2 卸载linux系统中自带的jdk 使用rpm qa grep java查询出系统自带的jdk xff1b 使用
  • Ubuntu 远程免密码登录设置

    我们正常使用 ssh 远程登录服务器进行操作 xff0c 需要输入用户名 服务器ip以及密码 xff0c 当我们需要同时管理多个服务器的时候 xff0c 每次都需要重复输入这些东西会显得特别麻烦和浪费时间 xff0c 因此我们可以通过配置密
  • Mybatis resultMap启动时报错:Could not resolve type alias userResultMap Cannot find class: userResultMap

    MyBatis中在查询进行select映射的时候 xff0c 返回类型可以用resultType xff0c 也可以用resultMap xff0c resultType是直接 表示返回类型的 xff0c 而resultMap则是对外部Re
  • synchronized-锁总结

    目录 一 相关知识点 1 1 对象头 1 2 锁相关概念 1 3 查看对象头工具 二 锁流程 2 1 加锁 xff1a monitorenter 2 2 释放锁 xff1a monitorexit 一 相关知识点 在 JDK1 6 之前 x
  • 软件工程师校招面试救急包

    LeetCode牛人总结 xff08 手撕代码前看看 xff0c 抱佛脚 xff09 https github com labuladong fucking algorithm blob master README md 剑指offer x
  • 微信SDK中含有的支付功能怎么去掉?

    一 说在前面的话 这两天遇到一个特别让我DT的问题 xff0c 估计大家通过标题就能知道问题了 没错 xff0c 就是在应用中集成了微信SDK后 xff0c 它自动支持了微信分享 登录 收藏 支付等功能 这一点没啥 xff0c TM的关键点
  • Android中图片的镂空效果(不规则图形的镂空)

    一 说在前面的话 我们在做新手引导时 xff0c 经常会遇到凸显某一块功能时需求 xff0c 类似于下图 xff1a 看到这个功能点可能会有点头大 xff0c 不过好在Android为我们提供一个美好的工具 xff1a PorterDuff
  • 利用三层交换机实现VLAN间路由

    原理概述 xff1a VLAN将一个物理的LAN在逻辑上划分成多个广播域 VLAN内的主机间可以直接通信 xff0c 而VLAN间不能直接互通 在现实网络中 xff0c 经常会遇到需要跨VLAN相互访问的情况 xff0c 工程师通常会选择一

随机推荐

  • Failed to resolve attribute at index 6: TypedValue{t=0x2/d=0x7f0400cd a=7 r=0x7f06006e}

    今天在开发时 xff0c 遇到一个程序的Bug xff0c 记录一下 在Dialog中展示一个布局 xff0c 布局中包含了TextView报了下面的错误 xff0c 最开始还以为是颜色设置的问题 xff0c 反复核对了一下颜色设置并没有问
  • TextView的TextColor中使用selector的问题

    在TextView中如果设置选中 点击 获取焦点时 xff0c 文字颜色发生改变时 xff0c 一般我们会通过代码中设置 不过Android给我们提供了一个更简洁的方式 xff0c 就是通过selector去改变 只需要在Res目录下创建一
  • 彻底理解Java中堆和栈的区别

    1 概述 在Java中 xff0c 内存分为两部分 xff0c 一种是堆内存 xff0c 另一种就是栈内存 2 Java中变量在内存中的分配 1 类变量 static修饰的变量 xff1a 在程序加载时系统就为它在堆中开辟了内存 xff0c
  • 深入了解多线程的原理

    说在前面的话 使用多线程的目的 在多个CPU核心下 xff0c 多线程的好处是显而易见的 xff0c 不然多个CPU核心只跑一个线程其他的核心就都浪费了即便不考虑多核心 xff0c 在单核下 xff0c 多线程也是有意义的 xff0c 因为
  • An operation is not implemented: not implemented被坑之路[Kotlin]

    吐槽一下 xff0c 程序猿的辛酸史 今天在开发新项目时 xff0c 首次使用了Kotlin语言 xff0c 对于之前只在纸上谈兵 xff0c 未在项目中使用过的码农 xff0c 很是一脸懵逼 但是迫于公司的要求 xff0c 只能硬头皮冲吧
  • 开发Android Camera—使用Kotlin语言,完成第一个自定义相机

    对于首次使用Kotlin语言开发 xff0c 在网上苦于寻找不到Kotlin语言编写的相机代码 xff0c 故写下这篇博客 好了 xff0c 咱们进入主题 在Android 5 0 xff08 SDK 21 xff09 中 xff0c Go
  • Android ConstraintLayout性能分析

    这篇文件是讲述ConstraintLayout性能的分析 xff0c 如果对于使用ConstraintLayout不是很了解的情况下 xff0c 请查看Android ConstraintLayout完全解析和性能分析 xff08 章节一
  • 针对drawableStart(Top、End、Bottom)边距的设置-Android布局技巧

    作为Android程序猿 xff0c 在开发布局的过程中 xff0c 我们的宗旨是能用一个View完成的效果 xff0c 绝不会用两个View或者嵌套View来完成 至于它的好处 xff0c 就不言而喻了吧 不懂的自行到网上看 xff0c
  • markdown基本语法

    转载自 Cmd 技术渲染的沙箱页面 xff0c 点击此处编写自己的文档 Cmd Markdown 简明语法手册 标签 xff1a Cmd Markdown 1 斜体和粗体 使用 和 表示斜体和粗体 示例 xff1a 这是 斜体 xff0c
  • unix环境高级编程——UNIX体系架构

    本期主题 xff1a unix环境高级编程 UNIX体系架构 文件IO 0 初始UNIX1 系统调用2 库函数2 1 C语言的运行库 3 shell 0 初始UNIX 这里略过unix的历史不讲 xff0c 网上有比较详细的资料 我们可以将
  • HTML基础<1>

    一 图片标签与超链接 lt br gt 是空格 lt hr gt 是横线 lt img src 61 34 34 width 61 34 34 height 61 34 34 gt lt a href 61 34 https www bai
  • Android Lottie动画

    Android Lottie动画 在Android中 xff0c 往往UI会让写一些动画效果 xff0c 比如启动页心形跳动 xff0c 返回效果等 一般我们在项目中常用的动画无非是以下几种 xff1a 普通动画帧动画属性动画通过改变Lay
  • 我与人工智能的故事

    本文作者 xff1a 诸葛越 前 言 人工智能的三次浪潮 2018年年初 xff0c 招聘季正如火如荼地进行 xff0c 而 数据科学家 和 算法工程师 绝对算得上热门职业 人工智能 机器学习 深度学习 建模 卷积神经网络 等关键词 xff
  • GitHub安装和使用

    GitHub安装和使用 GitHub是一个基于git的代码托管平台 xff0c 付费用户可以建私人仓库 xff0c 一般的免费用户只能使用公共仓库 xff0c 也就是代码要公开 Github 由Chris Wanstrath PJ Hyet
  • Linux系统java安装

    1 下载 进入Oracle官网进行JDK下载 2 创建目录 span class token function mkdir span usr java span class token function cd span usr java 3
  • 过年之抢红包算法

    前言 昨天是大年初一 xff0c 怎么说呢 xff0c 因为在读大学 xff0c 没有出来工作 xff0c 所以昨晚也是陆陆续续有收到一些红包 然后想起自己对算法感兴趣 xff0c 以前也看过一些公众号有讲过抢红包算法 xff0c 今天就更
  • DL基本知识(七)FTRL优化器

    契机 最近工作方向为缩减模型规模 xff0c 切入点为L1正则化 xff0c 选择该切入点的理由如下 xff0c 众所周知 xff0c L1正则化能令权重矩阵更稀疏 在推荐系统中特征多为embedding xff0c 权重矩阵稀疏意味着一些
  • 生产者消费者问题的C语言实现

    实验六 生产者 消费者问题实验 一 实验目的 掌握Linux下生产者 消费者问题算法的实现 二 实验原理 1 clone系统调用 xff1a 功能 xff1a 创建一个轻进程或线程 用法 xff1a intclone int fn void
  • 项目中使用ts的一些技巧

    项目上使用ts一年多了 xff0c 一边写 xff0c 一边看 xff0c 总结了一些小技巧 xff0c 写了一些分享给大家 xff0c 如果对你有所帮助就转评赞三连来一个 xff0c 那么我们开始今天的正题 xff1b 1 type联合类
  • 史上最全的ubuntu服务器搭建环境教程~~~

    ubuntu服务器搭建环境 1 先安装xshell xff1a 远程服务器连接 xff08 取代直接在浏览器 上 访问 xff09 2 安装xftp xff08 ftp文件传输 xff09 直接双击红色圈圈即可 3 安装mysql数据库 x