仿——管理系统从0开始——若依改
从网上下载若依vue使用若依项目修改器改名字服务器下载mysql服务器下载redis
前置环境部署
1. 从网上下载若依vue
2. 使用若依项目修改器改名字
3. 服务器下载mysql
参考:https://blog.csdn.net/bai_shuang/article/details/122939884
问题:
(1)压缩包位置放在usr/local/src中
不错,然后软件安装在usr/local,如mysql就在usr/local/mysql,但是这种感觉不太合适,应该安在opt文件夹,参考:https://blog.csdn.net/qq_52227892/article/details/130649748
(2)下载最新mysql-linux,后缀是.xz,文章命令无法解压
- 文章中:tar -zxvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.xz无法解压,报错:
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Ai回答:
在Linux中,当你尝试使用 tar -zxvf 命令来解压一个 .tar.xz 文件时,你会遇到错误,因为 -z 选项是专门用于处理gzip(.gz)压缩的,而 .xz 文件是由xz压缩工具压缩的。这就是为什么你看到了 gzip: stdin: not in gzip format 的错误消息,因为gzip无法识别或处理xz格式的输入。
tar -zxvf 命令中的 -z 告诉 tar 期待输入是一个通过gzip压缩的tar包。但是,当你给它一个 .tar.xz 文件时,tar 会尝试使用gzip来解压这个文件的压缩部分,这显然会失败。
为了正确解压 .tar.xz 文件,你应该使用不带 -z 选项的 tar -xvf 命令,如下所示:
bash
tar -xvf mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz
这个命令会告诉 tar 直接解压 .xz 压缩的tar包,而不需要通过gzip。
如果你仍然遇到问题,可能是因为你的 tar 版本不支持 .xz 格式。但是,这在大多数现代Linux发行版中都不是问题,因为 tar 通常已经内置了对 .xz 格式的支持。
如果你确定你的 tar 版本不支持 .xz,你可以考虑升级 tar 或者使用 xz 工具单独解压 .xz 部分,然后再使用 tar 解压解压后的 .tar 文件,但这通常是不必要的。
总结一下,使用 tar -xvf 而不是 tar -zxvf 来解压 .tar.xz 文件是正确的做法。如果你看到与gzip相关的错误消息,那通常意味着你使用了错误的选项或命令来解压文件。
- 需要使用tar -xvf mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz
修改配置文件 vim /etc/my.cnf (没有就新建)
[mysqld] #这个别忘记写,要不然报错:Found option without preceding group in config file /etc/my.cnf at line 1
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql看下面的解释,如果下载mysql,应解压至usr/local且重命名为mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
AI解释:
在MySQL的my.cnf(或my.ini,取决于操作系统)配置文件中,这些配置项用于定义MySQL服务器的运行参数。下面是对你提到的配置项的解释:
bind-address=0.0.0.0:
这个设置指定MySQL服务器监听的IP地址。0.0.0.0是一个特殊的IP地址,表示MySQL服务器将监听所有可用的网络接口上的连接请求。这允许来自任何IP地址的客户端连接到MySQL服务器。如果你只想让MySQL服务器监听特定的IP地址(例如,只为局域网内的客户端提供服务),你可以将0.0.0.0替换为那个特定的IP地址。
port=3306:
这个设置指定MySQL服务器监听的端口号。默认情况下,MySQL服务器使用3306端口。如果你需要更改MySQL服务器监听的端口,可以在这里设置。
user=mysql:
这个设置通常用于指定MySQL服务器启动后运行的用户。然而,在my.cnf文件的[mysqld]部分中设置user可能不是标准做法,因为MySQL服务器通常会在启动时通过其启动脚本(如mysqld_safe或systemd服务)以特定用户身份运行。这个设置可能是在某些特定配置或旧版本的MySQL中使用的。
basedir=/usr/local/mysql:
指定MySQL安装的基础目录。这个目录包含了MySQL的二进制文件、库文件等。
datadir=/data/mysql:
指定MySQL数据库文件的存储目录。这个目录包含了所有的数据库文件,如表文件、日志文件等。
socket=/tmp/mysql.sock:
指定MySQL服务器监听的Unix套接字文件的路径。Unix套接字是一种在同一台机器上的进程间通信机制。客户端可以通过这个套接字文件与MySQL服务器进行通信。
log-error=/data/mysql/mysql.err:
指定MySQL错误日志文件的路径。MySQL服务器会将错误信息记录到这个文件中,这对于问题诊断非常有用。
pid-file=/data/mysql/mysql.pid:
指定MySQL服务器进程ID文件的路径。这个文件包含了MySQL服务器主进程的进程ID(PID),可以用于监控和管理MySQL服务器进程。
character_set_server=utf8mb4:
指定MySQL服务器的默认字符集为utf8mb4。utf8mb4是utf8的超集,支持更多的Unicode字符,包括一些特殊的表情符号(emoji)。使用utf8mb4可以确保你的数据库能够存储和处理更广泛的字符集。
symbolic-links=0:
禁用符号链接。这可以防止MySQL服务器通过符号链接访问文件系统上的其他位置,从而增加安全性。
explicit_defaults_for_timestamp=true:
在MySQL 5.6.6及更高版本中,这个选项用于改变TIMESTAMP和DATETIME列的默认行为。当设置为true时,TIMESTAMP列的默认值将不再自动更新为当前时间戳(除非明确指定了DEFAULT CURRENT_TIMESTAMP或ON UPDATE CURRENT_TIMESTAMP)。这有助于避免一些意外的行为,特别是在复制和备份时。然而,请注意,这个选项在MySQL 8.0及更高版本中已被弃用,因为TIMESTAMP的默认行为已经改变。
本地navicat连接服务器
注意:因为这是服务器上安装的mysql,所以需要更改服务器安全组规则,放开入方向规则:3306端口。另外,一般公司的mysql基本上不使用3306常用端口,想要修改就去改/etc/my.cnf即可
给新建用户授予数据库权限
- 创建用户:CREATE USER ‘test’@‘%’ IDENTIFIED BY ‘123’;
- 授予权限:grant 权限列表 on 库名.表名 to 用户名@‘主机’
举例:grant all on heyu-debt.* to debt@‘%’,但是老是报错:No database selected,但是这个库确实有,我一气之下直接改成grant all on *.* to debt@'%'
授予所有库权限,结果成功了。
权限文章参考:https://blog.csdn.net/weixin_48814356/article/details/128983473 - 查看用户权限:show grants for debt@‘%’
- 收回所有权限:revoke all privileges on . from debt@‘%’,我使用root执行这个操作报错了:Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation,然后执行命令:
grant system_user on *.* to 'root';
然后解决了,参考文章:https://blog.csdn.net/weixin_42330311/article/details/104728396
收回权限(不包含赋权权限)REVOKE ALL PRIVILEGES ON . FROM username;
收回赋权权限REVOKE GRANT OPTION ON . FROM username;
使用第一个命令,用户还有可能会有访问performance_schema库的权限,使用第二个没了,但是仍然会有information_schema库的权限
数据库名字引起的授权的坑
我给数据库名起名:heyu-debt,给某用户授权·grant all on heyu-debt.* to debt@‘%’·,但是一直报错,找不到原因,我就猜猜是不是数据库名的原因,所以我又创建个数据库,名字为heyu_debt,使用grant all on heyu-debt.* to debt@'%'
命令给数据库命名,然后成功了,结果这个用户有了heyu-debt库和heyu_debt两个库的权限。奇怪!!!所以,数据库命名不要带杠‘-’,用下划线可以!!!
启动命令
进入:/usr/local/mysql/bin
执行:sudo service mysql start
4. 服务器下载redis
参考:https://blog.csdn.net/qq_47831505/article/details/123883715
由于上一篇文章中wget http://download.redis.io/releases/redis无法下载安装包,所以看下面文章,直接在本地下载后传到服务器上,和mysql一样。
https://blog.csdn.net/qq_52227892/article/details/130649748
安装位置
在上篇的mysql的安装位置中,我把压缩包放在了usr/local/src,安装在usr/local/mysql中,这个感觉不太对,应该安装在opt文件夹中,具体参考https://blog.csdn.net/qq_52227892/article/details/130649748
但是安装在user/local/redis中不容易报错!!!
具体步骤
- 网上下载压缩包http://download.redis.io/releases/,下载5版本就行,太高或太低都有可能有问题,我下的是5.09的
- 传到linux的opt文件夹中
- 解压
- 进redis执行make命令
- 进src执行make install命令,默认执行make install命令后安装redis在/usr/local/redis中,也可以指定进行安装,如make install /opt
- 然后进opt/redis-XX中将redis.conf移到/usr/local/redis/bin目录中,cp redis.conf /usr/local/redis/bin/
- 然后在/usr/local/redis/bin/目录中就可以启动了,启动命令:redis-server redis.conf或后台启动redis-server redis.conf &
- 然后设置redis开机自启,
- 但是有个问题,就是本地客户端工具Redis Desktop Manager v.0.8.8.384连接不上远程redis,原因:没有都对redis.conf进行修改
- 远程服务器放开6379端口
- 修改/usr/local/redis/bin/redis.conf文件,把bind 127.0.0.1改为 #bind 127.0.0.1 (注释掉) ,protected-mode yes 改为 protected-mode no,这两个都要改。另外还有个linux在编辑文件时的小技巧,vi看文件时,输入:/字符,就可以直接跳到对应的字符上。参考:https://cloud.tencent.com/developer/article/1347439
redis由于没有设置密码别黑客利用挖矿
问题:本地java连不上redis,然后我去服务器使用ps命令看redis是否启动,结果报错没权限
[root@xx3r5jfzh0iwgvz9 bin]# ps
/usr/bin/ps: line 2: /usr/bin/ps.original: Permission denied
我才刚下redis没多久…
参考:https://tieba.baidu.com/p/7156637436
这是服务器被黑了,你可以看一下/root/.ssh下有没有一个auth开头的文件,应该是你redis开启服务但是没有设置密码的原因造成的,重置服务器吧,或者问云的工作人员。
是redis开启免密登陆,被黑客利用执行了恶意脚本,应该是挖矿去了
如何解决?
不能解决,给redis加密
代码
步骤:
1. 配菜单
2. 修改菜单栏颜色
参考:https://blog.csdn.net/Sabrina_cc/article/details/125871591
直接像后端(验证码样式)一样配置化修改
2-1 修改主题颜色
在布局设置中也可以更改,但是只存在浏览器中,永久更改就该代码,也是类似配置性质的
位置:/src/store/modules/settings.js/state/
蓝色——>紫色:
// theme: storageSetting.theme || '#409EFF',
theme: storageSetting.theme || '#525CE5',
3. 代码里配路由
若依前端代码中这段什么意思
{
path: '/user',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: 'profile',
component: () => import('@/views/system/user/profile/index'),
name: 'Profile',
meta: { title: '个人中心', icon: 'user' }
}
]
},
ai回答:
这段代码是一个路由配置的对象,通常用在基于Vue.js的前端项目中,特别是在使用了Vue Router和某些UI框架(如Element UI、Ant Design Vue等)的项目中,以及在一些后台管理系统模板(如Vue Element Admin、Vue Ant Design等)中非常常见。这段代码定义了一个路由配置,让我们一步步解析它的含义:
path: ‘/user’:
这指定了该路由的访问路径。在这个例子中,当用户访问/user这个路径时,这个路由配置就会被触发。但这里有一点需要注意,由于hidden: true,这个路由在菜单中通常是不会显示的。
component: Layout:
这里指定了该路由对应的组件。Layout很可能是一个布局组件,它定义了页面的基本布局结构,比如侧边栏、顶部导航栏和主要内容区域等。这个组件会被渲染到页面上,作为/user路径下的页面框架。
hidden: true:
这个属性表示该路由在侧边栏(或任何形式的导航菜单)中不应该被显示。这通常用于那些不需要在导航菜单中显示的页面,比如登录页、404页面或是一些内部页面。
redirect: ‘noredirect’:
这里指定了一个重定向策略,但’noredirect’并不是一个Vue Router标准的重定向值。在大多数情况下,redirect属性会接收一个字符串或路由配置对象,表示当用户访问这个路由时应该被重定向到哪里。‘noredirect’可能是在这个特定项目中自定义的一个值,用于表示不进行重定向,或者是该项目路由系统的一个特殊约定。但需要注意的是,标准的Vue Router中并没有这样的用法。
children:
这是一个数组,用于定义嵌套路由。在这个例子中,它只有一个子路由配置。
子路由配置中的path: ‘profile’表示这个路由是/user的子路由,完整的访问路径将是/user/profile。
component: () => import(’@/views/system/user/profile/index’)是一个异步组件的定义,它使用动态导入(import())来按需加载组件。这意味着当用户访问/user/profile时,index组件才会被加载,这有助于优化应用的加载时间和性能。
name: 'Profile’为这个路由指定了一个名称,这可以在编程式导航中使用,比如this.$router.push({ name: ‘Profile’ })。
meta: { title: ‘个人中心’, icon: ‘user’ }定义了该路由的一些元信息,比如标题(title)和图标(icon)。这些信息通常用于生成导航菜单或页面标题等。
总的来说,这段代码定义了一个隐藏的路由/user,它使用了一个布局组件Layout,并且有一个子路由/user/profile,该子路由对应一个异步加载的index组件,用于展示用户的个人中心页面。
关于若依配置路由,左侧菜单栏的非隐藏路由,直接在配置菜单的地方设置组件路径即可!!!!!!!!
遇到的问题:
1. 前后登录原系统和新系统,token失效
redis的token并没有失效,让两个系统使用不同浏览器就可以了,有可能是cookie的原因
2. 若依上配好菜单及路由地址后,出现页面中有嵌套一个菜单及页面
这种应该是正常情况
3. 为什么原项目中没有配置左侧菜单栏路由,而页面却能访问到
原来这个非隐藏路由直接在配置菜单的地方写上组件路径就行了
更多推荐
所有评论(0)