
一、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 : 关闭并重启机器