Vmware安装Debian 11
一个想当厨子的码农 Lv2

一、Vmware安装Debian 11

本例中采用虚拟化软件VMware Workstation安装Debian 11.5.0(base system安装)。实际应用中,单个服务器一般都设定为单一功能,比如Web服务器,数据库服务器,LDAP服务器等,或者多台服务器分布式部署云计算组件如Hadoop等,单个服务器只需要操作系统的基本功能,因此Debian最小化安装符合需求,如果需要额外的功能,可以在使用过程中增加。

本例Debian安装环境如下:

主机(Host Machine):CPU 20核,内存32G,操作系统Windows 11家庭版64位

虚拟化软件:VMware Workstation 16 pro

https://www.debian.org/ 下载安装包,本例是debian-11.5.0-amd64-DVD-1.iso

1.1 安装前Vmware设置

1、在VMware菜单“编辑-首选项”可以设置虚拟机默认放置的目录,应选择有足够空间的硬盘分区。本例中是 D:\MyVM

2、创建虚拟机采用“自定义(高级)”配置,选择安装来源时,载入Debian的ISO后,Vmware无法识别版本,其识别的版本最高是Debian 10.x。选择“稍后安装操作系统”不采用简易安装,而采用手动安装。后面“客户机操作系统”选择Linux,下拉框选择Debian 10.x 64位。

3、虚拟机名称 deb-min,选择 D:\MyVM\deb-min作为存储位置

4、为虚机分配处理器1个,内核数量1个,2G内存。本例中这个虚拟机实例是作为干净基准系统,具体的应用虚拟机可以克隆这个虚拟机,不用重新安装。分配的CPU核数,内存数在克隆后可以在Vmware里修改。实验用虚机一般1核2G内存即可,可租用的轻量级云服务器一般是1核1G内存。实际虚机则根据需要分配资源,计算单元则对CPU要求较高,内容服务器则对内存要求较高。

5、使用NAT网络(默认选项),虚机没有与主机同级的IP地址。

桥接,NAT,仅主机模式,三者的简要区别如下:

(1)桥接:虚机与主机在网络中地位一样,虚机拥有与主机同级的独立IP地址。

(2)NAT:虚机共享主机的IP地址访问Internet,同一个主机中的各个虚机在同一网段中,可互相访问。外部无法直接访问虚机,但可通过主机的转接访问虚机

(3)仅主机模式:同一主机中的各个虚机可互相访问,虚机无法访问Internet,外部也无法访问虚机。

6、I/O类型:默认LSI Logic,磁盘类型:默认SCSI,选择磁盘:创建新虚拟磁盘。

7、分配20G虚拟磁盘空间,存为多个文件(默认选项)。没有勾选“立即分配所有磁盘空间”,会稍微影响虚机的速度。

8、指定虚机磁盘文件,保持默认(拆分成多个文件)。方便虚拟机的拷贝。

9、开始安装时,可能会提示要更改BIOS设置以支持64位操作系统之类的,按照提示修改主机BIOS设置,再回来安装。

注意:一般新的电脑无需设置自动支持64位虚拟化,有些电脑需要在BIOS里设置以支持64位虚拟化,有些更旧的电脑完全不支持64位虚拟化,则无法在VMware里安装64位的操作系统。

如上完成新建虚拟机设置。会出现该虚拟机配置画面,点击“编辑虚拟机设置”,打开对话框,核对硬件配置。如果CD/DVD是自动检测,则选择“使用ISO印象文件”,并选中Debian的安装镜像文件。

然后点击上图中的“开启此虚拟机”,开始安装。

开始安装后,窗口下面会出现“我已完成安装”,不要点,等安装完了再点。

1.2 安装过程

注意:安装过程中,鼠标点击虚机界面即可进入虚机操作,组合键ctrl + alt 可使鼠标返回主机。在VMware Workstation窗口的左下角会有提示。

1、安装过程与在真实裸机上安装一样,初始界面选择**“Advanced options” - “Graphical expert Install”,非常重要!!!**,然后回车进入安装过程。选择图形expert模式可以设置静态IP地址,最重要的是可以跳过更新,否则要等很长时间,甚至安装失败。

2、选择安装过程中的语言(也是安装后系统的默认语言):选择English (English),下一步,Location选other - Asia - China,然后locales选“en_US.UTF-8”,下一步Additional locales,勾上zh_CN.UTF-8,下一步System locale保持默认en_US.UTF-8

3、然后blind person,speech synthesizer跳过,进入keyboard,保持默认American Englis,下一步

4、进入Detect and mount installation media,保持默认勾选usb-storage,下一步,提示找到了,下一步,Installer components,列在这里的都是可选非必须的,直接下一步,

5、进入Detect network hardware,下一步Configure the network,是否自动配置网络,选No,下一步,IP address填192.168.138.9,下一步,Netmask保持默认255.255.255.0,下一步,Gateway修改为192.168.138.2,下一步,Nameserver,默认和网关一样,确认192.168.138.2,下一步,列出所有网络配置,检查确认Yes,下一步,默认3次,下一步。注意:先到Vmware“虚拟网络编辑器”里看一下IP段,确认是192.168.x.x之后再设置IP地址,包括掩码(一般都是255.255.255.0)

6、配置Hostname:localhost,下一步,Domain name 填localdomain,下一步

7、设置用户和密码,下一步,Yes - Enable shadow password,Yes - Allow login as root,下一步,设置root密码:4geT%not,下一步

8、创建新用户:Yes,下一步,全名zadmin,下一步,用户名zadmin,下一步,设置密码d00r%Key,下一步

9、设置时钟:Yes - Set the clock using NTP,下一步,保持默认,下一步,保持默认Asia/Shanghai,下一步

10、检测磁盘 - 磁盘分区,默认Guided - use entire disk,下一步,保持默认,下一步,保持默认All files in one partition,下一步,完成分区并写入,下一步,Yes确认写入,下一步

11、Install the base system,下一步,Kernel to install 保持默认,下一步,默认generic: include all available drivers,下一步,

12、Configure the package manager,下一步,默认No - scan extra media,下一步, Yes - use a network mirror,下一步,选择https,下一步,默认manually,下一步

mirror hostname填mirrors.tuna.tsinghua.edu.cn

mirror directory保存默认/debian/,下一步

HTTP proxy默认留空,下一步,yes - use non-free,下一步,默认Yes - Enable source … in APT,下一步,默认两项更新勾去掉,啥都不选(非常重要!!!),下一步

13、Select and install software,下一步,默认No automatic updates,下一步,默认No - survey,下一步,只留SSH server和standard system utilities其他都不要,下一步

14、Install GRUB boot loader,下一步,默认Yes - GRUB to primary drive,下一步,不要选第一项手工输入,选第二项/dev/sda,下一步,默认No - Force GRUB installation to the EFI removable media path,下一步

15、Finish the installation,下一步,默认Yes - Is the system clock set to UTC,下一步,安装完成,提示移除光盘,下一步

16、系统没有安装GUI,以root登录,安装完成。

关闭虚拟机后,可以编辑虚拟机设置。把CD/DVD 改回为自动检测。

关闭虚机后,可以编辑虚机设置,修改CPU核数,硬盘大小,内存等。

小技巧:虚机屏幕有时候不匹配VMware的窗口,需要拉动窗口的滚动条才能看见全部的虚机屏幕内容。或者,虚机屏幕太小,Vmware经常自动改变窗口大小去适应虚机。从VMware菜单“编辑 - 首选项 - 显示”,把“自动适应窗口”前的勾去掉(自动适应下面的两个选项都不勾)。然后再开启此虚机,可解决这个问题。

1.3 安装后设置

1.3.1 更新数据源

Debian的编辑器推荐nano,进入后编辑习惯比较像Windows记事本,下面提示了快捷键,Ctrl + o保存,下面提示保存的文件名,回车即可;Ctrl + x退出。

1. 首先编辑数据源 nano /etc/apt/sources.list,把第一行 deb cdrom 注释掉,然后加入清华大学的数据源。安装的时候已经指定了清华大学的数据源,所以有两行,删除,将下面的内容复制进去。复制了文本内容后,在nano界面,从Vmware菜单“编辑”-“粘贴”可以直接将主机中复制的文本粘贴到虚机nano中

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free

deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free

deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free

deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

2. 要增加更多的镜像,可以在/etc/apt/sources.list.d/目录下建立 *.list 文件

nano /etc/apt/sources.list.d/huawei.list

deb https://mirrors.huaweicloud.com/debian/ bullseye main non-free contrib

deb-src https://mirrors.huaweicloud.com/debian/ bullseye main non-free contrib

deb https://mirrors.huaweicloud.com/debian-security/ bullseye-security main

deb-src https://mirrors.huaweicloud.com/debian-security/ bullseye-security main

deb https://mirrors.huaweicloud.com/debian/ bullseye-updates main non-free contrib

deb-src https://mirrors.huaweicloud.com/debian/ bullseye-updates main non-free contrib

deb https://mirrors.huaweicloud.com/debian/ bullseye-backports main non-free contrib

deb-src https://mirrors.huaweicloud.com/debian/ bullseye-backports main non-free contrib

nano /etc/apt/sources.list.d/ustc.list

deb https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free

deb-src https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free

deb https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free

deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free

deb https://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free

deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free

deb https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main contrib non-free

deb-src https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main contrib non-free

3. 如上添加了清华,华为,中科大三个镜像,更新数据源apt update,提示有若干可升级,升级apt upgrade

4. apt与apt-get的区别

尽快适应并使用apt,广大Linux发行商都在推荐。

apt 命令 取代的命令 命令的功能
apt install apt-get install 安装软件包
apt remove apt-get remove 移除软件包
apt purge apt-get purge 移除软件包及配置文件
apt update apt-get update 刷新存储库索引
apt upgrade apt-get upgrade 升级所有可升级的软件包
apt autoremove apt-get autoremove 自动删除不需要的包
apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
apt search apt-cache search 搜索应用程序
apt show apt-cache show 显示安装细节
新的apt命令 命令的功能
apt list 列出包含条件的包(已安装,可升级等)
apt edit-sources 编辑源列表

从这里可以看出,刚才nano /etc/apt/sources.list命令可以用apt edit-sources命令替代,同样是打开nano编辑sources.list文件。

1.3.2 关于用户

目前系统里有2个用户,root是超级管理员;zadmin是系统管理员。

系统提示符为 # 表明用户为root,提示符为$ 表明用户为其他用户。

每个用户都有自己的主目录,以 ~表示,root用户是 /root,其他用户是 /home/用户名。例如zadmin输入命令 cd ~ 则会进入其主目录 /home/zadmin

zadmin需要执行root权限的命令时,可以用 sudo 临时获得权限,也可以用 su 切换身份为root。

使用sudo时,需要输入admin用户自己的密码,使用 su时,需要输入root用户的密码,使用“sudo su”则可以使用admin自己的密码切换到root用户身份,在root用户没有设置密码时,这个方法很好用。

1. Debian默认没有安装sudo,安装apt install sudo

2. 一般修改/etc/sudoers来增加zadmin,使其可以用sudo,打开此文件,首先提示此文件必须!!!由root用visudo命令打开;第二行推荐在/etc/sudoers.d/目录下添加文件的方式代替修改此文件;最后一行显示其包含了/etc/sudoers.d目录;最下面红色提示此文件为只读。可见,用nano修改此文件是不对的,也不要试图修改其只读属性再修改。

方法1是在/etc/sudoers.d目录下新建一个zadmin的文件,内容为:

zadmin ALL=(ALL)ALL

方法2是将用户加入sudo组,本例用第2中方法。usermod是修改用户,参数-a是将用户添加到某个组,并且不删除此用户其他组身份,参数-G指定用户的组。

usermod -aG sudo zadmin

然后命令cat /etc/group查看各组情况,可以看到sudo组里已经有zadmin了,如果输出太多,一屏放不下,可以用more /etc/group翻页查看,空格显示下一页,或者less。

然后切换身份su zadmin看看是否可用sudo

1.3.3 配置静态IP地址

第一步:确认Vmware网络配置

菜单“编辑”-“虚拟网络编辑器”,这个界面,有很多网络文章说要修改,其实不用。选中列表里的Vmnet8(NAT模式),只需要看一下子网IP 192.168.138.0 及 子网掩码 255.255.255.0 记住就行了。“使用本地DHCP服务将IP地址分配给虚拟机”前面的勾不用去掉

然后确认一下虚拟机的网络适配器是否是NAT,安装的时候默认就是这项。如果不是,就在虚拟机关机状态下,编辑虚拟机设置,改为NAT。

在Vmware里只需要确认上述配置就行了,不用做任何修改!

第二步:在虚拟机设置静态IP

本例在安装时已经配置了静态IP,下面确认一下配置,以后要修改的时候就知道去哪里修改。nano /etc/network/interfaces

第一行source /etc/network/interfaces.d/*说明先执行这个目录下的脚本,文件名无所谓,特殊配置就放在这个目录下。

auto ens33 这一行是新加的,说明随系统启动ens33网卡

iface ens33 inet static 这里的static说明是静态地址,否则dhcp表示动态分配

address 192.168.138.9/24 表示IP地址和掩码,24表示前3个8字节都为1,就是255.255.255.0的意思,同理8则表示255.0.0.0

gateway 192.168.138.2 网关,Vmware下网关一定是 .2 而不是 .1

dns-nameservers 192.168.138.2 与网关相同,也是 .2

从上面的注释来看,dns的设置是从resolvconf来的,nano /etc/resolv.conf

如果要修改dns的话就在这里改,或者增加新的dns。在Vmware局域网情况下,配置dns与网关一样即可,不需要添加任何其他dns,除非有特殊要求。

第三步:重启网络服务

本例中做了修改,则重启网络使配置生效

service networking restart

第二步里如果没有加auto ens33这一行,就会发现网络起不来(大坑)

从虚机ping www.baidu.com,消息滚动可以Ctrl + C 中断

从主机ping 192.168.138.9 都OK说明网络配置一切正常。

1.3.4 安装常用工具

前提是网络连接没有问题。

更新数据源:apt update 执行完会提示有多少软件包要更新,如果没有,则不需要执行更新系统的命令。

更新系统所有软件包:apt upgrade

**Debian默认没有防火墙!!!**如果要使用的话,可安装ufw,如何使用ufw设置防火墙可以参考:https://zhuanlan.zhihu.com/p/130943659

因为是最小化安装,很多工具没有,dpkg -l packagename 可以查询软件包是否已安装,查询发现net-tools,perl,wget已经安装了。其他的安装一下:

apt install gcc zip unzip

安装了上面的net-tools以后,就有ifconfig命令了,试一下

ifconfig

可以看到自己的静态IP地址

更新完毕后,可以重新启动一下系统 reboot

1.3.5 使用vi的问题

现象:在 Debian 下,初次使用 vi 的时候会有点问题,在编辑模式下使用方向键并不会使光标移动,而是在命令行中出现[A [B [C [D之类的字母,而且编辑错误的话也无法使用退格键,只能用 Delete 键来删除。

原因:由于 Debian 预安装的是 tiny 版本,会导致我们在使用上产生上述的不便。

解决方法:安装了 vim 的 full 版本之后,键盘的所有键在 vi 下就很正常了。

apt remove vim-common -y

apt install vim -y

1.3.6 彩色显示文件夹

使用ls列出文件夹和文件时,都是同一种颜色,无法区分

对于某一用户来说,其 ~/.bashrc 里是只针对这个用户的环境变量设置。

以root用户身份,nano ~/.bashrc

有提示:如果希望ls有颜色,就将下面的注释去掉

除了可以让ls有颜色外,还使命令ll表示ls -l,命令l表示ls -lA

编辑完成,保存退出。然后exit退出系统再登录,就可以看到ls列表有颜色了。灰色表示文件(不同类型文件有不同颜色),深蓝表示目录,浅蓝表示链接目录。

1.4 用Putty连接虚拟机上传下载文件

第一步:虚机允许root远程登录

命令nano /etc/ssh/sshd_config,修改如下,增加了一行PermitRootLogin yes,允许root用户远程登录;然后顺便把PubkeyAuthentication yes前的注释去掉了,允许使用密钥的方式远程登录,后面用得到。重启SSH服务service sshd restart

第二步:下载安装Putty并连接

到Putty官网https://putty.org/,选第一个Download PuTTY,下面是第三方项目。

下载64-bit x86版本,形如putty-64bit-0.77-installer.msi的安装文件。

安装完成后,有多个程序,首先运行Putty,输入IP地址,点open就可以连接。

连接后以root身份登录,可以看到显示的主机IP是192.168.138.1,命令exit可以退出登录,断开连接。

然后运行PSFTP,窗口中输入open 192.168.138.11 进行连接,以root登录,可以看到提示当前工作路径是 /root,命令exit可以退出登录,断开连接。

以后可以在虚拟机开机状态下,关闭Vmware,选择让虚拟机后台运行,然后用Putty连接进行操作,上传下载文件。

需要在虚拟机里安装JDK,安装文件为主机 D:\software\ jdk-8u341-linux-x64.tar.gz,这个文件是事先从Oracle网站下载来的。打开PSFTP连接,root登录。使用put命令将文件上传到虚拟机 /root 目录下。注意路径分隔符使用 / 而不是Windows风格的 \,然后ls命令查看虚拟机上是否有这个文件了。exit退出,断开连接。

1.6 密钥方式连接虚机

密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。

第一步:制作密钥对

在虚机上制作密钥对。首先用root登录,然后执行以下命令:

ssh-keygen <== 建立密钥对

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): <== 回车

Created directory ‘/root/.ssh’.

Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或回车

Enter same passphrase again: <== 再输入一遍密钥锁码,回车

Your identification has been saved in /root/.ssh/id_rsa. <== 私钥

Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥

The key fingerprint is:

The key’s randomart image is:

现在,在 /root 生成了一个 .ssh 的隐藏目录,内含两个密钥文件,id_rsa 为私钥,id_rsa.pub 为公钥。

密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。本例中没有密钥锁码,方便使用。

第二步:在虚机上安装公钥

键入以下命令,在服务器上安装公钥:

cd .ssh

cat id_rsa.pub >> authorized_keys

如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:

chmod 600 authorized_keys

chmod 700 ~/.ssh

第三步:虚机开启密钥登录

在“1.4用Putty连接虚拟机上传下载文件”中第一步已经开启了密钥登录。

第三步:用PSFTP下载私钥到主机

用PSFTP密码登录方式连接虚机,下载id.rsa到本地重命名192.168.138.9.rsa

第四步:将密钥导入到Putty

首先打开PuttyGen,点Load按钮,选择文件对话框里的文件类型默认是*.ppk,改为*.*,找到刚才的192.168.138.9.rsa,就导入成功了,提示是旧的pem格式。

然后点击Save private key,保存为192.168.138.9.ppk,与刚才的文件最好在同一文件夹下,询问是否要个锁码,不理他。

关闭PuttyGen,打开Putty,左侧选择Session,右边填写Host Name为root@192.168.138.9,这里指定了登录用户为root,如果为其他用户则改为其他用户名。然后下面Saved Sessions空格里填上一个名字deb-192.168.138.9,点右侧Save就保存了。

然后左侧Connection - SSH - Auth,直接点Auth不用展开,右边Browse找到刚才保存的192.168.138.9.ppk

回到上一张图的Session,选中deb-192.168.138.9的情况下,点Save,一定要保存,否则下次又要找密钥。然后点下面的Open就连接成功了,不需要输入密码,直接root登录成功。

今后要连接的时候,打开Putty,选中保存的deb-192.168.138.9,点Load,然后点下面的Open就可以连接上了。

主机运行Putty组件Pageant,会在Windows右下角出现一个常驻的代理,从中可以快速连接已经保存的session或者进行一些密钥操作

1.7 安装JDK8

前面“1.4 用Putty连接虚拟机上传下载文件”已经把JDK安装文件上传到 /root目录下了。创建目录 /usr/java :mkdir /usr/java

进入/root:cd /root

解压文件到 /usr/java:tar -zxvf jdk-8u341-linux-x64.tar.gz -C /usr/java

cd /usr/java

看到已经有了一个文件夹jdk1.8.0_341,创建一个软链接,使访问简便。并且有多个版本的jdk存在时,切换只修改修改default的链接就行了,不需要再修改/etc/profile

ln -s jdk1.8.0_341 default

在/usr/java/下就生成了文件夹default,实际是jdk1.8.0_341的链接,访问default就和访问jdk1.8.0_341一样。

修改/etc/profile:nano /etc/profile

在文件最后添加

export JAVA_HOME=/usr/java/default

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

注意CLASSPATH=后面是个英文句号,这样设置可以解决很多命令行下运行java程序找不到类的问题。

保存,退出,更新:source /etc/profile

执行下面命令验证各变量正确:

echo $JAVA_HOME

echo $CLASSPATH

java -version

二、Debian11安装MySQL

2.1 克隆虚机

上一章已经创建了一个虚机deb-min,更新了系统,安装了常用工具,设置了密钥连接,安装了JDK8,为此虚机创建一个快照。菜单“虚拟机 - 快照 - 拍摄快照”,输入名字和描述就行了。

菜单“虚拟机 - 管理 - 克隆”,克隆源选择“现有快照”,找到刚才拍摄的快照。

克隆类型选择“创建完整克隆”

输入虚机名称deb-mysql,确认保存位置,完成。

2.2 设置虚机

开启新的虚机deb-mysql,以root登录,首先要修改的是静态IP地址

nano /etc/network/interfaces

将静态IP地址改为192.168.138.21就行了,其他的不用动。

nano /etc/hosts

将IP地址改为192.168.138.21就行了,其他的不用动。

重启网络服务service networking restart

虚机ping www.baidu.com,主机ping 192.168.138.21都OK

参照“1.6密钥方式连接虚机”,打开Putty,在Session里新建保存一个名称为mysql-192.168.138.21,连接地址为root@192.168.138.21,左侧Connection - SSH - Auth,直接点Auth不用展开,右边Browse找到刚才保存的192.168.138.9.ppk(就是这个旧的密钥,不需要到虚机上创建新的密钥对了,因为是克隆的,所有信息都一样)

Save,Open 连接成功。

一般安全起见,新的虚机要创建新的密钥对。本例直接使用了旧的密钥,简便。

2.3 安装MySQL

2.3.1 安装MySQL8

到MySQL官网,下载MySQL APT Repository,操作系统是Debian 11,要安装的MySQL8.0,因此下载到的对应版本是mysql-apt-config_0.8.24-1_all.deb

下载需要登录。注册一个免费的MySQL或Oracle账号即可,以后用得着。

用PSFTP将文件上传到虚机 /root 目录下。

参考https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/官网步骤

先把这个文件换个地方:mv mysql-apt-config_0.8.24-1_all.deb /opt/

然后进/opt安装,因为有一次报错说_apt用户进不了/root因为权限不够

安装APT库:apt install ./mysql-apt-config_0.8.24-1_all.deb

有错误提示,也不管了 …

升级软件源apt update

安装MySQL:apt install mysql-server

中间设置root密码,输入sql=R00T两次,然后关于加密选项,保持默认回车即可。然后居然就安装完了,没有报错。

查询mysql的状态systemctl status mysql.service,居然是active

如果是inactive(active是绿色的)则启动之systemctl start mysql.service

启动完毕再查询状态systemctl status mysql.service,正常

用安装过程中设置的密码sql=R00T登录mysql,如下命令

mysql -u root -p

进入MySQL后,show databases; 正常。命令quit或exit退出MySQL

Debian没有防火墙,不用管开启3306端口的事。

重启虚机reboot,查询mysqld的状态systemctl status mysql.service

发现是active的,说明MySQL服务是随系统启动而启动的,一切正常。

到此,MySQL安装完毕,初始化配置root密码完毕。关闭虚机,拍摄快照,启动虚机,以后没事就不再安装MySQL了。

(1)此虚机将作为数据库服务器长期保持运行,关闭Vmware界面时让其后台运行。今后操作MySQL以远程为主,比如用IDEA里的database navigator

(2)MySQL有其备份方式,定期备份保障数据安全。另外,此虚机也可定期拍摄快照,如遇系统级故障,可以用快照恢复。

2.3.2 特殊故障

MySQL一段时间不操作则服务停掉。有时几天,有时十几天。

参考解决方法:https://124654439.iteye.com/blog/2174953

注意该文章的后半部分,否则就白看了。关键点是修改参数要带 global

以root身份连接登录进mysql

mysql> show global variables like ‘wait_timeout’;

mysql> set global interactive_timeout= 31536000;

mysql> set global wait_timeout=31536000;

在MySQL8.1的版本有这个问题,此方法可以解决。

如果没这个问题,则略过。

2.3.3 建立数据库、用户、表、数据

数据库服务器建好后,一般远程操作。这里仅展示在服务器上的基本操作。

本例中建立的库、用户、表、数据是为了配合前面的Spring Boot案例。

用root登录MySQL,建立一个数据库ssm_db,建立一个用户ssmaster,然后把数据库ssm_db的所有权限赋予ssmaster

mysql -u root -p

输入root的密码登录,下面的命令都是MySQL里了(在MySQL命令行,也可以通过Vmware菜单“编辑”-“粘贴”进行文本粘贴,不需要输入。快捷键Ctrl + v也可以用,注意此时光标不要在虚机输入界面

mysql> create database ssm_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

mysql> create user ssmaster@‘%’ identified by ‘1gE=M!ka’;

mysql> create user ssmaster@localhost identified by ‘1gE=M!ka’;

mysql> grant all on ssm_db.* to ssmaster@‘%’;

mysql> grant all on ssm_db.* to ssmaster@localhost;

mysql> quit;

库和用户都建好了,然后用ssmaster登录MySQL

mysql -u ssmaster -p

输入用户ssmaster的密码,下面的命令都是MySQL里了

mysql> use ssm_db;

mysql> CREATE TABLE IF NOT EXISTS tbl_book(id INT UNSIGNED AUTO_INCREMENT,type VARCHAR(100) NOT NULL,name VARCHAR(100) NOT NULL,description VARCHAR(200),PRIMARY KEY (id))DEFAULT CHARSET=utf8;

mysql> INSERT INTO tbl_book(type,name,description) VALUES (‘novel’,’Learning Spring Boot’,’How to coding with Spring Boot.’);

mysql> select * from tbl_book;

可以看到表建好了,并且插入了一条数据。id是自增的,不需要输入。

mysql> quit;

2.3.4 远程操作数据库

IDEA社区版安装Database Navigator插件就可以远程操作数据库了。

一般工具栏在左侧,点开后,点绿色 + 号新建一个MySQL连接如下。输入Name不一定要与数据库名一致,Description可以留空,Host填写IP地址,确认端口号是3306,Database填上面创建的库ssm_db,下面的用户名密码填上面创建的用户名密码,Driver用内置库。可以先点Test Connection按钮测试一下连接,显示成功。然后点最下面的OK,这个数据库连接就完成了。

连接建好后,就可以看到ssm_db的整个结构,并可以进行建表,修改数据等操作。

一般对数据库进行操作,是通过SQL方式。点击Open SQL console按钮打开SQL的控制台,在控制台输入如下,插入一条数据

insert into tbl_book(type,name,description) VALUES (‘技术’,’大学物理’,’全国通用大学物理教程’);

点Execute Statement就可以执行这条SQL语句。执行完毕,就生效了,另外两个按钮Commit和Rollback还亮着,说明这条SQL语句还没有正式提交数据库,可以回滚。点击Commit按钮正式提交,然后Commit和Rollback两个按钮就灰了。

再输入select * from tbl_book; 执行,就可以看到查询出的数据。

2.4 MySQL Workbench

MySQL数据库安装在Linux服务器上,直接在服务器上操作不方便。主流的操作方式是使用客户端进行可视化的远程操作。

MySQL自己的客户端工具MySQL Workbench是免费的,功能强大。

https://www.mysql.com/products/workbench/去下载,选择Windows 64位操作系统,下载到的msi安装文件形如mysql-workbench-community-8.0.31-winx64.msi

安装之后,打开的首页按“+”创建一个连接。填上连接的名字,IP地址,确认端口3306,username填root,下面password点开对话框填入root(MySQL的root用户)的密码,然后点test connection,发现拒绝连接

拒绝连接的原因,“2.3.1 安装MySQL8”的时候只有一个用户 root@localhost,远程连接来自localhost以外的域会认为不是这个用户,就会被拒绝。创建一个新用户root@%并赋予其全部权限即可。注意root@%与root@localhost密码一样,以免混淆。

解决方法:以root登录服务器CentOS,以MySQL的root用户登录MySQL

增加用户 create user ‘root’@’%’ identified by ‘sql=R00T’;

赋予最高权限 grant all on *.* to ‘root’@’%’;

quit; 退出MySQL

再打开MySQL workbench就可以正常连接了。左侧窗口选择下面的标签Schemas就可以看到数据库列表,展开ssm_db就可以看到各个表,选中tbl_book,在右侧就能看到这个表里的数据,可以直接修改表数据,修改完后点Apply按钮,就会弹出一个对应你操作的SQL语句,确认OK,修改就生效了。

SQL Workbench一般用在项目的中后期,运维期等。可以很方便可视化的增删改查数据,如果用户身份是root或者是对应库的管理员,则可以很方便的对库、表、字段、视图、触发器、函数进行可视化的调整,备份或导入数据库,非常方便。

附录一、Debian常用命令

1.1 apt

列出所有可更新的软件清单命令:sudo apt update

升级软件包:sudo apt upgrade

列出可更新的软件包及版本信息:apt list --upgradeable

升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade

安装指定的软件命令:sudo apt install <package_name>

安装多个软件包:sudo apt install <package_1> <package_2> <package_3>

更新指定的软件命令:sudo apt update <package_name>

显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>

删除软件包命令:sudo apt remove <package_name>

清理不再使用的依赖和库文件:sudo apt autoremove

移除软件包及配置文件:sudo apt purge <package_name>

查找软件包命令:sudo apt search

列出所有已安装的包:apt list --installed

列出所有已安装的包的版本信息:apt list --all-versions

1.2 systemctl

1.2.1 Systemd初体验和Systemctl基础

1. 首先检查你的系统中是否安装有systemd并确定当前安装的版本

# systemctl --version

2. 检查systemd和systemctl的二进制文件和库文件的安装位置

# whereis systemd

# whereis systemctl

3. 检查systemd是否运行

# ps -eaf | grep [s]ystemd

注意:systemd是作为父进程(PID=1)运行的。在上面带(-e)参数的ps命令输出中,选择所有进程,(-a)选择除会话前导外的所有进程,并使用(-f)参数输出完整格式列表(即 -eaf)。

也请注意上例中后随的方括号和例子中剩余部分。方括号表达式是grep的字符类表达式的一部分。

4. 分析systemd启动进程

# systemd-analyze

5. 分析启动时各个进程花费的时间

# systemd-analyze blame

6. 分析启动时的关键链

# systemd-analyze critical-chain

重要:Systemctl接受服务(.service),挂载点(.mount),套接口(.socket)和设备(.device)作为单元。

7. 列出所有可用单元

# systemctl list-unit-files

8. 列出所有运行中单元

# systemctl list-units

9. 列出所有失败单元

# systemctl --failed

10. 检查某个单元(如 cron.service)是否启用

# systemctl is-enabled crond.service

11. 检查某个单元或服务是否运行

# systemctl status firewalld.service

1.2.2 使用Systemctl控制并管理服务

12. 列出所有服务(包括启用的和禁用的)

# systemctl list-unit-files --type=service

13. Linux中如何启动、重启、停止、重载服务以及检查服务(如 httpd.service)状态

# systemctl start httpd.service

# systemctl restart httpd.service

# systemctl stop httpd.service

# systemctl reload httpd.service

# systemctl status httpd.service

注意:当我们使用systemctl的start,restart,stop和reload命令时,我们不会从终端获取到任何输出内容,只有status命令可以打印输出。

14. 如何激活服务并在启动时启用或禁用服务(即系统启动时自动启动服务)

# systemctl is-active httpd.service

# systemctl enable httpd.service

# systemctl disable httpd.service

15. 如何屏蔽(让它不能启动)或显示服务(如 httpd.service)

# systemctl mask httpd.service

# systemctl unmask httpd.service

16. 使用systemctl命令杀死服务

# systemctl kill httpd

# systemctl status httpd

1.2.3 使用Systemctl控制并管理挂载点

17. 列出所有系统挂载点

# systemctl list-unit-files --type=mount

18. 挂载、卸载、重新挂载、重载系统挂载点并检查系统中挂载点状态

# systemctl start tmp.mount

# systemctl stop tmp.mount

# systemctl restart tmp.mount

# systemctl reload tmp.mount

# systemctl status tmp.mount

19. 在启动时激活、启用或禁用挂载点(系统启动时自动挂载)

# systemctl is-active tmp.mount

# systemctl enable tmp.mount

# systemctl disable tmp.mount

20. 在Linux中屏蔽(让它不能启用)或可见挂载点

# systemctl mask tmp.mount

# systemctl unmask tmp.mount

1.2.4 使用Systemctl控制并管理套接口

21. 列出所有可用系统套接口

# systemctl list-unit-files --type=socket

22. 在Linux中启动、重启、停止、重载套接口并检查其状态

# systemctl start cups.socket

# systemctl restart cups.socket

# systemctl stop cups.socket

# systemctl reload cups.socket

# systemctl status cups.socket

23. 在启动时激活套接口,并启用或禁用它(系统启动时自启动)

# systemctl is-active cups.socket

# systemctl enable cups.socket

# systemctl disable cups.socket

24. 屏蔽(使它不能启动)或显示套接口

# systemctl mask cups.socket

# systemctl unmask cups.socket

1.2.5 服务的CPU利用率(分配额)

25. 获取当前某个服务的CPU分配额(如httpd)

# systemctl show -p CPUShares httpd.service

注意:各个服务的默认CPU分配份额=1024,你可以增加/减少某个进程的CPU分配份额。

26. 将某个服务(httpd.service)的CPU分配份额限制为2000 CPUShares/

# systemctl set-property httpd.service CPUShares=2000

# systemctl show -p CPUShares httpd.service

注意:当你为某个服务设置CPUShares,会自动创建一个以服务名命名的目录(如 httpd.service),里面包含了一个名为90-CPUShares.conf的文件,该文件含有CPUShare限制信息,你可以通过以下方式查看该文件:

27. 检查某个服务的所有配置细节

# systemctl show httpd

28. 分析某个服务(httpd)的关键链

# systemd-analyze critical-chain httpd.service

29. 获取某个服务(httpd)的依赖性列表

# systemctl list-dependencies httpd.service

30. 按等级列出控制组

# systemd-cgls

31. 按CPU、内存、输入和输出列出控制组

# systemd-cgtop

1.2.6 控制系统运行等级

32. 启动系统救援模式

# systemctl rescue

33. 进入紧急模式

# systemctl emergency

34. 列出当前使用的运行等级

# systemctl get-default

35. 启动运行等级3,即多用户模式(命令行)

# systemctl isolate runlevel3.target

# systemctl isolate multiuser.target

36. 设置多用户模式或图形模式为默认运行等级

# systemctl set-default runlevel3.target

# systemctl set-default runlevel5.target

37. 重启、停止、挂起、休眠系统或使系统进入混合睡眠

# systemctl reboot

# systemctl halt

# systemctl suspend

# systemctl hibernate

# systemctl hybrid-sleep

对于不知运行等级为何物的人,说明如下。

  • Runlevel 0 : 关闭系统
  • Runlevel 1 : 救援?维护模式
  • Runlevel 3 : 多用户,无图形系统
  • Runlevel 4 : 多用户,无图形系统
  • Runlevel 5 : 多用户,图形化系统
  • Runlevel 6 : 关闭并重启机器
 评论
评论插件加载失败
正在加载评论插件