数据库环境搭建 数据库服务器准备
按照教程搭建数据库服务器,我这里选择的事ubuntu22.04server版,搭建过程按照教程一步一步来即可,搭建过程中遇到2个小问题
vm重装后网卡问题 重新配置网络后,虚拟机可以ping通主机,主机ping不通虚拟机,需要在编辑网络中,重新配置
但点应用的时候会出现无响应的情况,这有可能事因为卸载vm的时候注册表没删感觉,用CCleaner卸载重装一下就好
Failed unmounting /cdrom. 出现这种情况,如果是用u盘重写系统,拔掉U盘重启即可,如果是vm,直接重启就行。
网络配置 服务器版的ubuntu的网络配置在
root@eraser:~# cat /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity' network: ethernets: ens33: addresses: - 192.168.174.249/24 gateway4: 192.168.174.2 nameservers: addresses: [8.8.8.8,114.114.114.114] search: [] version: 2
如果有进行修改,需要通过netplan命令应用
sudo netplan apply sudo systemctl restart systemd-resolved.service
同样,在开始一个数据库的安装时记得打个快照
Mysql
我这里选择mysql8.0,然后安装之前记得更新一下软件包列表
安装mysql服务器 查找一mysql安装包
sudo apt search mysql-server
安装mysql服务器,我这里选择的是8.0版本
sudo apt install -y mysql-server sudo apt install -y mysql-server-8.0
启动mysql服务,并设置开机自动启动
sudo systemctl start mysql sudo systmctl enable mysql sudo systemctl status mysql
修改密码权限
sudo mysql -uroot -p ALTER USER 'root' @'localhost' IDENTIFIED WITH mysql_native_password BY '新密码' ; set password=password('新密码' );grant all privileges on *.* to root@"%" identified by "密码" ; flush privileges;
注意 :配置8.0版本参考:我这里通过这种方式没有实现所有IP都能访问;我是通过直接修改配置文件才实现的,MySQL8.0版本把配置文件 my.cnf
拆分成mysql.cnf
和mysqld.cnf
,我们需要修改的是mysqld.cnf
文件:
root@eraser:~# vim /etc/mysql/mysql.conf.d/mysqld.cnf root@eraser:~# sudo systemctl restart mysql
重启服务后,我们试试能不能在本机用navicat连接
mysql Error 1130
这个被连接的数据不允许使用主机xxx.xxx.xxx.xxx访问,系统数据库mysql中user表中的host是localhost,只允许是用 localhost (127.0.0.1)连接;
我们试着修改一下相关配置,这里使用该表法
use mysql; update user set host = '%' where user = 'root'; flush privileges; select host, user from user
再测试一下连接
Oracle 用ubuntu搭建依赖一直搞不全,无法解决,决定换成CentOS了
查看swap分区大小
root@eraser:~# grep SwapTotal /proc/meminfo SwapTotal: 7340024 kB
swap分区需要大于2G,如果小于2G,可以按照下面的方法扩容
free -m # 查看是否开启swap分区,如果都是0说明没有开启 mkswap /tmp/swapfile1 #创建swap分区文件 dd if=/dev/zero of=/tmp/swapfile1 bs=1G count=2 #创建交换文件 sudo chmod 600 /tmp/swapfile1 mkswap swapfile # 激活文件 echo /tmp/swapfile1 swap swap defaults 0 0 >> /etc/fstab # 设置系统开机启动 swapon --show #查看目前已存在的swap空间
修改系统标识 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@localhost ~]# echo redhat-7 > /etc/redhat-release [root@localhost ~]# cat /etc/redhat-release redhat-7
配置环境 用下面的命令查询系统的参数
/sbin/sysctl -a | grep sem >> 1.txt /sbin/sysctl -a | grep file-max >> 1.txt /sbin/sysctl -a | grep aio-max >> 1.txt /sbin/sysctl -a | grep ip_local_port_range >> 1.txt /sbin/sysctl -a | grep rmem_default >> 1.txt /sbin/sysctl -a | grep rmem_max >> 1.txt /sbin/sysctl -a | grep wmem_default >> 1.txt /sbin/sysctl -a | grep wmem_max >> 1.txt /sbin/sysctl -a | grep shmall >> 1.txt /sbin/sysctl -a | grep shmmax >> 1.txt /sbin/sysctl -a | grep shmmni >> 1.txt
fs.aio-max-nr=1048576 fs.file-max= 6815744 kernel.shmmni = 4096 kernel.sem=250 32000 100 128 kernel.shmall = 2097152 kernel.shmmax=2147483648 net.ipv4.ip_local_port_range = 9000 65500 net.ipv4.icmp_echo_ignore_broadcasts =1 net.ipv4.conf.all.rp_filter =1 net.core.rmem_default = 262144 net.core.rmem_max= 4194304 net.core.wmem_default= 262144 net.core.wmem_max= 1048576
将内容复制到/etc/sysctl.conf
root@eraser:~# vim /etc/sys sysctl.conf sysctl.d/ sysstat/ systemd/ root@eraser:~# vim /etc/sysctl.conf root@eraser:~# sysctl -p #更新内核参数
安装依赖与软件包 还是用Cent安的顺
[root@localhost ~]# yum -y install binutils* compat-libcap1* compat-libstdc++* gcc* gcc-c++* glibc* glibc-devel* ksh* libaio* libaio-devel* libgcc* libstdc++* libstdc++-devel* libXi* libXtst* make* sysstat* elfutils* unixODBC* unzip lrzsz
创建用户 [root@localhost ~] [root@localhost ~] [root@localhost ~] [root@localhost ~] [root@localhost ~] [root@localhost ~] uid=1000(oracle) gid=1001(dba) 组=1001(dba),1000(oinstall)
创建目录 [root@localhost ~] [root@localhost ~] [root@localhost ~] [root@localhost ~] [root@localhost ~] [root@localhost ~] [root@localhost ~] 总用量 0 drwxr-xr-x. 2 oracle oinstall 6 12月 17 16:19 inventory drwxr-xr-x. 2 oracle oinstall 6 12月 17 16:16 oracle drwxr-xr-x. 2 oracle oinstall 6 12月 17 16:20 src
配置限制文件 [root@localhost ~] oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
配置oracle的bash配置文件 https://blog.csdn.net/weixin_57208584/article/details/135868555
[root@localhost ~] export PATHexport ORACLE_BASE=/opt/oracleexport ORACLE_HOME=$ORACLE_BASE /product/11.2.0/db_1export ORACLE_SID=orclexport ORACLE_UNQNAME=orclexport PATH=$ORACLE_HOME /bin:/usr/sbin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME /lib:/lib:/usr/libexport LANG=Cexport NLS_LANG=AMERICAN_AMERICA.AL32UTF8[root@localhost ~]
上传数据库文件 [root@localhost ~]# unzip -q linux.x64_11gR2_database_1of2.zip -d /opt/src [root@localhost ~]# unzip -q linux.x64_11gR2_database_2of2.zip -d /opt/src [root@localhost ~]# ls -l /opt/src total 0 drwxr-xr-x. 8 oracle oinstall 128 Aug 21 2009 database
修改SELinux配置文件 [root@localhost ~]# vim /etc/selinux/config # 修改完后重启一下
登陆oracle用户,修改数据库配置文件 [root@localhost ~] [oracle@localhost root]$ vi /opt/src/database/response/db_install.rsp oracle.install.option=INSTALL_DB_SWONLY:指定安装类型为仅软件安装,不包括数据库实例。 ORACLE_HOSTNAME=oracle.server:设置Oracle数据库服务器的主机名为oracle.server。 UNIX_GROUP_NAME=oinstall:指定安装过程中使用的UNIX组为oinstall。 INVENTORY_LOCATION=/opt/inventory:指定Oracle库存目录的位置。 SELECTED_LANGUAGES=en,zh_CN:选择安装过程中支持的语言,这里选择了英文和简体中文。 ORACLE_HOME=/opt/oracle/product/11.2.0/db_1:设置Oracle数据库的安装目录。 ORACLE_BASE=/opt/oracle:设置Oracle数据库的基础目录。 oracle.install.db.InstallEdition=EE:指定安装的企业版(Enterprise Edition)。 oracle.install.db.DBA_GROUP=dba:指定数据库管理员(DBA)组为dba。 oracle.install.db.OPER_GROUP=oinstall:指定操作员组为oinstall。 oracle.install.db.config.starterdb.type=GENERAL_PURPOSE:指定创建的数据库类型为通用型。 oracle.install.db.config.starterdb.globalDBName=orcl:设置全局数据库名为orcl。 oracle.install.db.config.starterdb.SID=orcl:设置系统标识符(SID)为orcl。 oracle.install.db.config.starterdb.memoryLimit=800:设置数据库内存限制为800MB。 oracle.install.db.config.starterdb.password.ALL=oracle:设置数据库所有用户的默认密码为oracle。 DECLINE_SECURITY_UPDATES=true :拒绝安装过程中的安全更新。
开始静默安装 [oracle@localhost root]$ /opt/src/database/runInstaller -silent -responseFile /opt/src/database/response/db_install.rsp -ignorePrereq
如果卡在这里很久,我们就再开一个窗口,执行命令,有时候可能没有信息,稍等一会,再执行一下即可
[root@localhost ~]# /opt/oracle/product/11.2.0/db_1/root.sh Check /opt/oracle/product/11.2.0/db_1/install/root_localhost.localdomain_2024-12-17_18-35-34.log for the output of root script
再回去刚刚的界面看一下,会有新的信息出现
出现successfully就可以停了
修改监听配置文件 [oracle@localhost root]$ vi /opt/src/database/response/netca.rsp INSTALL_TYPE=""custom""
执行监听命令,我这里报错了,没有GUI
[oracle@localhost root]$ /opt/oracle/product/11.2.0/db_1/bin/netca /slient /responseFile /opt/src/database/response/netca.rsp
换了一个终端,Xterm,可以发现
解决方法
# 查看SSH的客户端地址 [oracle@localhost root]$ env | grep SSH SSH_CLIENT=192.168.174.1 38882 22 SSH_TTY=/dev/pts/0 SSH_CONNECTION=192.168.174.1 38882 192.168.174.142 22 # 设置DISPLAY变了 [oracle@localhost root]$ export DISPLAY=192.168.174.1:0.0 [oracle@localhost root]$ yum -y install xeyes [oracle@localhost root]$ xeyes #会跳出个小眼睛,关了就行
然后再执行刚刚的命令
配置数据库实例文件 [oracle@localhost root]$ vim /opt/src/database/response/dbca.rsp # 添加下面的配置文件 GDBNAME = "orcl":全局数据库名(Global Database Name)设置为orcl。这是一个唯一的名称,用于在网络中标识数据库。 SID = "orcl":系统标识符(System Identifier)设置为orcl。SID是Oracle数据库的一个独特标识符,用于区分不同的Oracle数据库实例。 SYSPASSWORD = "oracle":SYS用户的密码设置为oracle。SYS是Oracle数据库中的一个特权账户,用于执行数据库管理任务。 SYSTEMPASSWORD = "oracle":SYSTEM用户的密码设置为oracle。SYSTEM用户也是数据库中的一个特权账户,通常用于创建和管理数据库对象。 SYSMANPASSWORD = "oracle":SYSMAN用户的密码设置为oracle。SYSMAN用户用于管理Oracle企业管理器(Oracle Enterprise Manager)。 DBSNMPPASSWORD = "oracle":DBSNMP用户的密码设置为oracle。DBSNMP用户用于Oracle的Simple Network Management Protocol(SNMP)服务。 DATAFILEDESTINATION = /opt/oracle/oradata:数据文件的目标位置设置为/opt/oracle/oradata。这是数据库数据文件存储的目录。 RECOVERYAREADESTINATION=/opt/oracle/flash_recovery_area:闪回恢复区的目标位置设置为/opt/oracle/flash_recovery_area。这是Oracle闪回恢复和备份文件存储的目录。 CHARACTERSET = "AL32UTF8":字符集设置为AL32UTF8。这是一个多字节字符集,支持多种语言和字符。 NATIONALCHARACTERSET= "AL16UF16":国家字符集设置为AL16UF16。这是一个用于存储国家特定字符的字符集,通常用于Unicode数据。 TOTALMEMORY = "1638":为数据库配置的总内存设置为1638MB。这个参数指定了数据库可以使用的最大内存量。 # 生效文件 [oracle@localhost root]$ /opt/oracle/product/11.2.0/db_1/bin/dbca -silent -responseFile /opt/src/database/response/dbca.rsp
查看进程是否启动 [oracle@localhost root]$ ps -ef | grep ora_ | grep -v grep
修改启动或关闭实例的命令 [oracle@localhost root]$ vi /opt/oracle/product/11.2.0/db_1/bin/dbstart [oracle@localhost root]$ vi /opt/oracle/product/11.2.0/db_1/bin/dbshut # 将这两个文件的配置修改为下面这个 ORACLE_HOME_LISTNER=/opt/oracle/product/11.2.0/db_1
再配置一下oratab文件
[oracle@localhost root]$ vi /etc/oratab
启动实例 [root@localhost ~]# /opt/oracle/product/11.2.0/db_1/bin/dbstart Processing Database instance "orcl": log file /opt/oracle/product/11.2.0/db_1/startup.log [root@localhost ~]# chmod +x /etc/rc.d/rc.local [root@localhost ~]# vi /etc/rc.d/rc.local # 添加下面这两项配置 su oracle -lc "opt/oracle/product/11.2.0/db_1/bin/lsnrctl_start" su oracle -lc "opt/oracle/product/11.2.0/db_1/bin/dbstart"
连接数据库 [oracle@localhost root]$ sqlplus / as sysdba
用navicat连接试试
ORA-12170 这个一般是因为系统上的防火墙限制了,可以先关了试试
sudo firewall-cmd --state //查看防火墙状态 sudo systemctl stop firewalld //关闭防火墙
PostgreSQL
下载安装 打开官方地址 :选择我们想要的版本,我们使用的是Linux7.x版本,如下
复制执行即可
# PostgreSQL的官方YUM仓库 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install -y postgresql14-server sudo /usr/pgsql-14/bin/postgresql-14-setup initdb sudo systemctl enable postgresql-14 sudo systemctl start postgresql-14
验证 PostgreSQL不推荐使用root管理,在安装成功postgreSQL后,他默认会给你创建一个用户:postgres
,无密码, 可以修改密码:ALTER USER postgres WITH PASSWORD '新密码'
[root@localhost ~]# sudo -u postgres psql postgres=# \l postgres=# alter user postgres with password '123456'
配置 远程连接配置 配置postgresql.conf [root@localhost ~]# vim /var/lib/pgsql/14/data/postgresql.conf
配置pg_hba.conf [root@localhost ~]# vim /var/lib/pgsql/14/data/pg_hba.conf
重启服务
[root@localhost ~]# systemctl restart postgresql-14
远程连接测试
致命错误 后面发现是,之前改密码没加分号,导致语句没有生效。。。
# 先创建数据库用户dbuser postgres=# create user dbuser with password '密码'; # 创建系统用户 adduser dbuser # 修改系统用户密码 passwd dbuser # 切换用户为postgre su postgres # 登录 psql # 修改dbuser的密码 postgres=# alter user dbuser with password '自己的password'; # 或者 postgres=# \password dbuser # 创建数据库时分配 postgres=# create database 数据库名称 owner dbuser; # 创建数据库后赋予用户postgres权限 postgres=# grant all privileges on database 数据库名称 to dbuser;
配置数据库的日志 [root@localhost ~]# vim /var/lib/pgsql/14/data/postgresql.conf # 代表日志是开启的。 logging_collector = on # 日志存放的路径,默认放到当前目录下的log里 log_directory = 'log' # 日志的文件名,默认是postgresql为前缀,%a表示把星期作为后缀 log_filename = 'postgresql-%a.log' # 日志文件会被覆盖 log_truncate_on_rotation = on # 一天一个日志文件 log_rotation_age = 1d # 日志文件,没有大小限制 log_rotation_size = 0
Redis 下载redis # 创建一个存放redis的目录 [root@localhost ~]# cd /usr/local/soft/ # 下载 [root@localhost soft]# wget https://download.redis.io/releases/redis-6.0.9.tar.gz [root@localhost soft]# ls redis-6.0.9.tar.gz
解压 [root@localhost soft]# tar -zxvf redis-6.0.9.tar.gz
安装gcc依赖 Redis 是C语言编写的,编译需要 GCC。
Redis6.x.x版本支持了多线程,需要 gcc 的版本大于 4.9
因为之前安oracle时安过,但可能版本不合适,我们查看下版本
[root@localhost soft]# gcc -v ...... gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
需要升级一下
但好像因为停止维护的原因,我们需要手动升级一下,或者换Debian的系统。。。
下载GCC9.3.0源码并解压 wget -c /opt/tmp/ https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz --user-agent="Mozilla" #考虑到安装失败的可能性,创建一个临时文件夹来安装GCC sudo mkdir /opt/tmp cd /opt/tmp #解压安装包到临时文件夹里 sudo tar -zxvf /home/paul/Downloads/gcc-9.3.0.tar.gz
下载依赖文件 # 要用到bzip包,可以先下一个 yum install -y bizp2 cd gcc-9.3.0/ #下载gmp mpfr mpc等供编译需求的依赖项 ./contrib/download_prerequisites
创建预编译目录
设置编译选项并编译 ../configure --prefix=/usr/local/gcc-9.3.0 --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilib
–-enable-languages表示你要让你的gcc支持哪些编程语言;
-–disable-multilib表示编译器不编译成其他平台的可执行代码;
-–disable-checking表示生成的编译器在编译过程中不做额外检查
–-enable-checking=xxx 表示编译过程中增加XXX检查
–prefix=/usr/local/gcc-9.3.0 指定安装路径
–enable-bootstrap 表示用第一次编译生成的程序进行第二次编译,然后用再次生成的程序进行第三次编译,并且检查比较第二次和第三次结果的正确性,也就是进行冗余的编译检查工作。 非交叉编译环境下,默认已经将该值设为 enable,可以不用显示指定;交叉编译环境下,需要显示将其值设为 disable。
安装 #编译生成makefile文件 make #安装GCC sudo make install
超级久这个过程,大概3个小时左右
安装后的设置 #设置环境变量 touch /etc/profile.d/gcc.sh sudo chmod 777 /etc/profile.d/gcc.sh sudo echo -e ``'\nexport PATH=/usr/local/gcc-9.3.0/bin:$PATH\n'` `>> /etc/profile.d/gcc.sh && source /etc/profile.d/gcc.sh
#设置头文件 sudo ln -sv /usr/local/gcc/include/ /usr/include/gcc
#设置库文件 touch /etc/ld.so.conf.d/gcc.conf sudo chmod 777 /etc/ld.so.conf.d/gcc.conf sudo echo -e ``"/usr/local/gcc/lib64"` `>> /etc/ld.so.conf.d/gcc.conf
#加载动态连接库 sudo ldconfig -v ldconfig -p |grep gcc
#测试 gcc -v # 还需要修改/usr/bin/下的gcc cd /usr/bin/ mv gcc gcc_4.8.5 ln -s /usr/local/gcc-9.3.0/bin/gcc /usr/bin/gcc
编译安装
提示tcl版本较低,直接安过新的就i行
# 安装新版tcl yum install -y tcl-devel # 清楚make缓存命令 make distclean # 重新编译 make # 测试 make test
安装成功的结果是 src 目录下面出现服务端和客户端的脚本
redis-server
redis-cli
redis-sentinel
修改配置文件 默认的配置文件是/usr/local/soft/redis-6.0.9/redis.conf后台启动,不然窗口一关服务就挂了
如果需要密码访问,取消 requirepass 的注释,在外网(比如阿里云)这个必须要配置,这里我们保持默认即可
使用指定配置文件启动redis /usr/local/soft/redis-6.0.9/srg/redis-server /usr/local/soft/redis-6.0.9/redis.conf
查看是否启动
netstat -lntup | grep 6379
但命令太长了,我们可以通过alies配置别名启动
[root@localhost redis-6.0.9]# vim ~/.bashrc # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias rcli='/usr/local/soft/redis-6.0.9/src/redis-cli' alias redis='/usr/local/soft/redis-6.0.9/src/redis-server /usr/local/soft/redis-6.0.9/redis.conf' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi [root@localhost redis-6.0.9]# source ~/.bashrc 然后记得新开个窗口,不然不会生效
如果还没有多半是防火墙的问题
连接测试 之前用kali安装过redis的客户端,Debian安起来容易的多,没那么多办错
redis-cli -h 192.168.174.142 -p 6379
也是成功连上了,还有一个好用的图形化工具Another Redis Desktop Manager