Scoop自定义bucket、快速切换软件版本号、数据迁移
前言
网上一大推介绍scoop的基本命令使用的教程,这里不介绍这些,而是讲以下内容:
- 如何利用scoop,通过一行命令 轻松切换windows系统的jdk版本号?
- 如何创建自己的Bucket?以及可能遇到的问题。
- scoop数据迁移:换了一台新电脑,如何将老电脑中scoop管理的软件迁移到新电脑?
Scoop常用操作
安装特定版本
安装特定的软件版本
scoop install 软件名@版本号
有些软件官方网站并不会保留历史版本的下载链接,这也是 scoop 不能支持安装软件指定版本的原因之一。
比如Maven,scoop只能下载最新版本,指定版本3.8.5就不行。
嗯,这需要发挥一下人的能动性,打开第一个ERROR链接:https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.zip
提示Not Found
那,将url的后半段裁剪掉,可以进入了
点击其中的Maven-3/
其中3.9.6就是maven最新版,也就是scoop默认会下载的版本。
看来,只有4个版本的Maven可以在官网下载了。尝试用scoop下载3.8.8
成功了
有意思的是,由于我提前利用scoop下载了maven3.9.6,并且对3.9.6进行了配置。因此,我新下载的3.8.8的xml文件,竟然直接使用了3.9.6的版本!
版本切换
在同一程序的不同版本之间切换
scoop reset 软件名@版本号
注意,也可以根据apps文件夹内的 文件夹名称进行切换
坑
使用scoop的版本切换命令,它只会将 当前路径的 软件版本进行切换(不包括子路径),而不会切换所有路径下的软件版本。不仅如此,当你将当前的 命令行关闭,scoop的版本切换命令 就会失效。
比如下图中,在 /本地电脑 路径下,将node版本切换为20,你可以看到提示信息显示,只是切换了当前路径而已。
当你在其他路径查看node版本,依旧是原来的 node16
版本切换无效的问题: https://v2ex.com/t/1015062
全局版本切换
究竟怎样 才能让一个scoop reset 命令 修改电脑的全局软件版本?
关键在于 scoop生成的 current快捷键文件夹。
以nodejs的版本切换为例子。
本质上,scoop reset 命令 不过是将current快捷方式的指针 改变路径。
我们只要在PC的系统变量中,设置 NODE_HOME变量,值为 current文件夹路径。
在系统变量中,找到 Path变量,在Path变量中,添加一行新路径。
%系统变量名%
可以引用 系统变量的值。注意,由于NodeJs的 .exe文件在current路径下,所以直接写成如下格式就行了:
%NODE_HOME%\
正如下图所示,一般软件的.exe文件在 bin目录下。
将 current快捷访问方式 设置为系统变量后,scoop reset 就可以修改软件版本号为 全局了。
JDK全局切换
根据上一节的内容,我们可以全局切换jdk了。
添加系统变量 JAVA_HOME_SCOOP,变量值为 scoop的 jdk的current文件夹路径。
将JAVA_HOME_SCOOP变量 添加到 系统变量Path之中,替换 原来的 JAVA_HOME变量为 JAVA_HOME_SCOOP
修改软件名称
有时候你在Bucket上下载的软件名称会很奇怪,无法见名知意。
比如jdk8,你需要使用这个名称——temurin8-jdk才能从bucket中下载
这个名称格式有些奇怪,怎么做 才能改成“openjdk8”?
答案是:大胆地在Scoop的安装目录下的app目录下,直接修改文件夹名称!
scoop切换openjdk8的运行,不会出现任何错误
Bucket
Bucket常用操作
Bucket是Scoop的一个概念,可以理解为存放了许多安装软件的远程仓库。Scoop默认只自带一个叫做“main”的官方维护的Bucket,这里面可以安装的软件并不多。
可以运行 scoop bucket list 查看本地添加的所有Bucket,默认情况下只有一个main。
其中 extras 是 Scoop 官方维护的另一个 Bucket,包含了比 main 更多的软件包。
个人推荐运行以下命令添加一些 Bucket:
$ scoop install git # 先安装 Git, 这是添加 Bucket 的前置 $ scoop bucket add java $ scoop bucket add extras $ scoop bucket add dorado https://github.com/chawyehsu/dorado
其中 extras 是 Scoop 官方维护的另一个 Bucket,包含了比 main 更多的软件包。dorado 则是国内开发者维护的仓库,包含了许多适合国内用户使用的软件包。而 java,顾名思义,包含了许多与 Java 有关的软件包。还有一个名为 php 的 Bucket,如果你需要使用 PHP 也可以装上。
许多软件也都提供了不同版本——你可以通过
$ scoop bucket add versions
添加 versions Bucket 来安装它们。
删除一个bucket:
scoop bucket rm bucketname
自定义Bucket
注意:每次你在GitHub的Bucket仓库中修改or添加新的json文件,都需要在本地重新连接github仓库 或者 更新github本地仓库,因为scoop是通过直接将远程的bucket github仓库复制到本地 来运作的。
官方文档部分
先阅读官方文档 关于自定义Bucket的部分——Buckets · ScoopInstaller/Scoop Wiki (github.com)
点击Use this template,并选择 创建一个新仓库
你需要根据下图中的提示,修改 新创建的Bucket GitHub仓库的一些设置
根据提示,修改auto-pr.ps1的upstream参数
接下来就是在bucket文件夹下创建 软件对应的json了。比如,因为scoop的主流Bucket中,没有maven3.6.1,我想要使用scoop下载并管理这个版本的maven
注意json文件的命名,直接命名为 maven.json,如果是其他命名,比如 maven-3.6.1.json,这个命名会影响到 多版本maven共享配置文件,具体介绍在 进阶部分->需求2。当然,命名为maven-3.6.1.json也不能算错。
json文件
按照这个网站的思路写:Scoop 进阶 - 建立自己的Bucket - 知乎 (zhihu.com)
注意:下载maven,就不需要 bin 配置
查找 下载资源文件的hash值
先随便在github上找一个bucket仓库中的buck/app.json文件
复制url并输入浏览器搜索栏,就可以下载这个软件 安装包了。
下载后,在下载路径打开cmd。
使用windows的命令 certutil -hashfile 下载,有三种参数加密方式选择,默认为sha256码,也有md5和sha1形式的,命令如下
#cd到file所在路径 certutil -hashfile [file] sha256 certutil -hashfile [file] md5 certutil -hashfile [file] sha1
对比发现,与github仓库中json文件的hash一致。
【注意】如果你想要使用md5算法的hash,你必须在 .json配置文件中 hash字段值格式为"md5:哈希值";默认的算法sha256,不需要添加前缀 "sha256:" 。
因此,通过分析别人的json,获取一个软件的hash步骤为
1、下载它的安装包
2、使用windows命令获得hash值
我想要将maven3.6.1加入到自定义的bucket中,创建文件maven-3.6.1.json
{ "##": "This file is a template. Fill the blanks and add or remove fields as necessary.", "version": "3.6.1", "description": "This version is compatible with IDEA_2019.3", "homepage": "https://archive.apache.org/dist/maven/maven-3/", "notes": "", "url": "https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.zip", "hash": "7e6cfe98dc9c16ae6aa267db277860594695144d719c99d1fc519e89346a8edf", "bin": "maven.exe" }
将这个json文件上传到github的MyBucket/bucket目录下
接下来,本地scoop连接MyBucket GitHub仓库
scoop bucket add <bucketname> https://github.com/<username>/<bucketname> scoop install <bucketname>/<manifestname> # 其中manifestname是由 bucket中的json文件名决定的
scoop连接github仓库出错
github以邮件形式提示错因
直接使用Nodejs20,就可以解决这个问题
下载自定义Bucket的命令,其中“maven”是由 MyBucket/bucket/maven.json文件名决定
# 通过 查询MyBucket中的maven.json文件 来安装maven scoop install MyBucket/maven
下载速度好慢
下载压缩包出错
出错:
我找原因的方式是,比较Scoop推崇的Main Bucket中的Maven.json,寻找出路
比较有可能的是:extract_dir
查找官方文档
似乎是因为maven3.6.1下载资源为.zip文件,还需要一些额外的指定
打开上述文件,第一层目录是
第二层目录才是maven应用
或许就是因为没有设置extract_dir参数了。也就是说,如果url下载的资源为压缩包文件,你需要考虑解压后的文件路径问题,通过 extract_dir 配置项手动指定。
进阶部分
需求1
虽然已经解决了 “自己将资源放入Bucket,并使用scoop下载”的需求。但是,scoop另外一个优点——“切换版本时,自动对软件进行全局配置”——却没有实现
比较Scoop官方的Main Bucket,查看maven.json
怀疑是env_add_path,查看这个参数的官方文档,果然没错
注意,这里的全局配置,有两个参数env_add_path和env_set,若是下载Maven3.6.1,则只需要添加env_add_path。但其他软件未必如此,比如JDK
打开别人写好的某个版本的json文件,你会发现还需要设置env_set,这里就不细琢磨了。
需求2
再比如,我使用别人的bucket下载各个版本的maven,它们都会归类在同一个文件夹下,并且会将配置文件互通
不同版本的maven,共用一个配置文件conf
打开MainBucket的maven.json文件,可以看到persist
刚好与上述的快捷键文件夹一致,查阅官方文档
在maven.json中添加新的参数
{ "##": "This file is a template. Fill the blanks and add or remove fields as necessary.", "version": "3.6.1", "description": "This version is compatible with IDEA_2019.3", "homepage": "https://archive.apache.org/", "url": "https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.zip", "hash": "7e6cfe98dc9c16ae6aa267db277860594695144d719c99d1fc519e89346a8edf", "extract_dir": "apache-maven-3.6.1", "env_add_path":"bin", "persist": [ "conf", "lib\\ext" ] }
显然,上述几个参数 明显是用来配置windows全局环境的。
/使用 scoop uninstall maven@3.6.1 竟然误删了所有maven......命令行误删还不好恢复......好在问题不大。/
但确实让scoop下成了maven3.6.1了
再下载Main Bucket的maven3.9.6
maven3.6.1与maven3.9.6确实都在同一个文件夹了。
app.json文件补充
杂项
## 注释行,但只能有一行,也可以使用字符串数组
{ "##":"this is a comment." }
notes: A one-line string, or array of strings, with a message to be displayed after installing the app.
depends:软件运行时的依赖,这个依赖将会自动安装。通常配合 suggest 使用,suggest 用于提示用户需要安装哪些依赖
suggest:展示 建议可选软件 的信息,这些软件会提供互补特性。
格式:
"suggest": { "JDK": "java/openjdk" }
如果这些建议的软件已经被下载了,那么用户不会看到 suggest语句
architecture ,如果软件资源不是32bit,需要使用这个键值。
比如下面的JDK8的json
"architecture": { "64bit": { "url": "https://corretto.aws/downloads/resources/8.412.08.1/amazon-corretto-8.412.08.1-windows-x64-jdk.zip", "hash": "ac7a2c1020b18c74c0155efac525b36827468e95bf343a721e12027066c16633" }, "32bit": { "url": "https://corretto.aws/downloads/resources/8.412.08.1/amazon-corretto-8.412.08.1-windows-x86-jdk.zip", "hash": "efe8d66520e0678772746f4261d895f044dde38dfebc36d193491567e91933fc" } },
shortcuts:中文“快捷方式”。指定快捷方式值 使得在开始菜单可以看到快捷方式。
shortcuts是数组格式,它的每一个元素也是数组格式。
一个shortcut是一个数组,这个数组至少要指定两个参数,还有两个参数是可选的。
- 第1个参数:到目标文件的路径【必选】
- 第2个参数:快捷方式的名字【必选】 支持子目录:
\\ - 第3个参数:开始的参数【可选】
- 第4个参数:快捷方式图标文件的路径【可选】
{ "shortcuts": [ [ "AccessEnum.exe", "SysInternals/AccessEnum - View accesses to directories, files and registry keys", "/accepteula" ], [ "AdExplorer.exe", "SysInternals/AdExplorer - Active Directory viewer and editor", "/accepteula" ] ] }
环境配置
env_add_path: 将这个字段表示的目录 添加到 用户的路径(如果--global参数被使用,则添加到系统路径)。这个字段表示的目录 必须与安装目录相关 而且 在安装目录内部
env_set :环境参数的集合,用于用户环境 (如果使用--global参数,则用于系统环境)
格式(JDK8为例):
"env_set": { "JAVA_HOME": "$dir" }
这里的 $dir,该怎么理解?
在scoop中$app
代表当前的软件名称,也就是manifest file的名称 eg.maven.json,则$app为maven。
$dir
表示 Scoop的安装路径下的 apps\app\current
比如jdk8的$dir就是下图(其实current是快捷键,指向 jdk8软件的目录)
$dir的补充(没有用到install之类的键名):
上文是jdk8在scoop中的环境配置状况,接下来再展示jdk8传统的手动配置环境变量,以作为对比。
手动配置情况:
各种$变量的含义
你会在scoop的lib目录下的 各种.ps1文件里经常看到 $开头的变量,.json文件有时也会使用
Pre Post (un)install scripts · ScoopInstaller/Scoop Wiki (github.com)
数据迁移
重装系统之后, 如果把原有的scoop文件夹粘贴回去user文件夹,然后在powershell中再次输入Windows下的软件管理神器:scoop文章中的安装命令,会得到一个Scoop is already installed错误,要想正确恢复scoop,根据官方回答,请按照以下步骤:
- 备份scoop目录
- 备份的目录放到新的安装位置,为了描述方便,新scoop位置为 'C:\scoop'
- 若安装目录非默认情况下,重新设置安装目录
在Powershell输入如下命令。这些命令其实就是在为这台电脑添加 用户变量级别的环境变量'SCOOP'
$env:SCOOP='C:\scoop' [environment]::setEnvironmentVariable('SCOOP',$env:SCOOP,'User')
- 检查“此电脑” 环境变量的 “用户变量” path中有:
%SCOOP%\shims
- 执行
/apps/scoop/current/bin
里面的refresh.ps1
和scoop.ps1
脚本 - 执行:
scoop reset *
reset 失败:https://github.com/ScoopInstaller/Scoop/issues/4684
我出现了一点小失败:
使用命令 scoop list
,tomcat确实异常。
后来我查看了旧电脑的Scoop软件目录中的 "tomcat",原来这个文件夹本来就是空文件夹,起作用的就是下方的"tomcat9"
------------------------
自定义Bucket练习
mysql@8.0.30
mysql.json先在本地git仓库配置,验证正确后再push到远程仓库。
在各种主流的bucket中,找到一个mysql.json文件作为自己的模板(我在main这个bucket中找的mysql.json),复制代码到自己的MyBucket/bucket/目录下的新建文件mysql.json
{ "version": "9.1.0", "description": "The world's most popular open-source database", "homepage": "https://dev.mysql.com/downloads/mysql/#info-tab", "license": "GPL-2.0-only", "notes": [ "Run 'mysqld --standalone' or 'mysqld --console' to start the Database,", "or run following command as administrator to register MySQL as a service. See: https://dev.mysql.com/doc/refman/en/windows-start-service.html", "", "mysqld --install MySQL --defaults-file=\"$dir\\my.ini\"", "", "To stop and/or delete the Service run 'sc stop MySQL' and 'sc delete MySQL'." ], "suggest": { "vcredist": "extras/vcredist2022", "mysql-shell": "mysql-shell" }, "architecture": { "64bit": { "url": "https://dev.mysql.com/get/Downloads/MySQL-9.1/mysql-9.1.0-winx64.msi", "hash": "md5:7a26420bb3446eab56f389dba05a9718", "extract_dir": "PFiles64\\MySQL\\MySQL Server 9.1" } }, "pre_install": [ "$ini = \"$dir\\my.ini\"", "if (!(Test-Path \"$ini\")) {", " # Using $dir instead of $persist_dir, causes this error:", " # [ERROR] [MY-010187] [Server] Could not open file '~/scoop/apps/mysql/current/data/host.err' for error logging: Permission denied", " Add-Content -Path \"$ini\" -Value \"[mysqld]`ndatadir=$($persist_dir -replace '\\\\', '/')/data\" -Encoding Ascii", " # Set username so it's not required when connecting", " Add-Content -Path \"$ini\" -Value \"[client]`nuser=root\" -Encoding Ascii", "}" ], "post_install": [ "if (!(Test-Path \"$dir\\data\\auto.cnf\")) {", " warn 'Initializing data directory ...'", " Invoke-ExternalCommand -FilePath \"$dir\\bin\\mysqld.exe\" -ArgumentList '--initialize-insecure' | Out-Null", " warn 'Database has been initialized (username: root, password: <blank>)'", "}" ], "bin": [ "bin\\ibd2sdi.exe", "bin\\innochecksum.exe", "bin\\myisamchk.exe", "bin\\myisamlog.exe", "bin\\myisampack.exe", "bin\\myisam_ftdump.exe", "bin\\mysql.exe", "bin\\mysqladmin.exe", "bin\\mysqlbinlog.exe", "bin\\mysqlcheck.exe", "bin\\mysqld.exe", "bin\\mysqldump.exe", "bin\\mysqlimport.exe", "bin\\mysqlshow.exe", "bin\\mysqlslap.exe", "bin\\mysql_config_editor.exe", "bin\\mysql_secure_installation.exe", "bin\\mysql_tzinfo_to_sql.exe", "bin\\my_print_defaults.exe", "bin\\perror.exe" ], "shortcuts": [ [ "bin\\mysql_configurator.exe", "MySQL Configurator" ] ], "persist": [ "data", "my.ini" ], "checkver": "MySQL Community Server ([\\d.]+)", "autoupdate": { "architecture": { "64bit": { "url": "https://dev.mysql.com/get/Downloads/MySQL-$majorVersion.$minorVersion/mysql-$version-winx64.msi", "hash": { "url": "https://dev.mysql.com/downloads/mysql/", "regex": "(?s)$basename.*?$md5" }, "extract_dir": "PFiles64\\MySQL\\MySQL Server $majorVersion.$minorVersion" } } } }
将上面的配置项修改为mysql8.0.30
autoupdate是负责自动更新的,不需要,删除它;shortcuts负责安装成功后生成桌面快捷键,不需要,删除它;suggest也没啥用,删除。pre_install和post_install似乎是 安装失败的提示信息,留着吧。
mysql8.0.30 压缩包 官方下载地址
获取 压缩包的hash值,这次采用md5算法:
d17b3d4bab676a2c365b82f65c9a5374
因为这是一个压缩包,因此,需要配置解压路径信息
mysql-8.0.30-winx64.zip解压后的第一层路径是 mysql-8.0.30-winx64,然后才是软件的各种文件。
因此,需要在mysql.json设置 extract_dir 字段。
"architecture": { "64bit": { "url": "https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.30-winx64.zip", "hash": "md5:d17b3d4bab676a2c365b82f65c9a5374", "extract_dir": "mysql-8.0.30-winx64" } },
因此,我最终的mysql.json文件如下:
{ "version": "8.0.30", "description": "The world's most popular open-source database: mysql", "homepage": "https://dev.mysql.com/downloads/mysql/#info-tab", "license": "GPL-2.0-only", "notes": [ "Run 'mysqld --standalone' or 'mysqld --console' to start the Database,", "or run following command as administrator to register MySQL as a service. See: https://dev.mysql.com/doc/refman/en/windows-start-service.html", "", "mysqld --install MySQL --defaults-file=\"$dir\\my.ini\"", "", "To stop and/or delete the Service run 'sc stop MySQL' and 'sc delete MySQL'." ], "architecture": { "64bit": { "url": "https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.30-winx64.zip", "hash": "md5:d17b3d4bab676a2c365b82f65c9a5374", "extract_dir": "mysql-8.0.30-winx64" } }, "pre_install": [ "$ini = \"$dir\\my.ini\"", "if (!(Test-Path \"$ini\")) {", " # Using $dir instead of $persist_dir, causes this error:", " # [ERROR] [MY-010187] [Server] Could not open file '~/scoop/apps/mysql/current/data/host.err' for error logging: Permission denied", " Add-Content -Path \"$ini\" -Value \"[mysqld]`ndatadir=$($persist_dir -replace '\\\\', '/')/data\" -Encoding Ascii", " # Set username so it's not required when connecting", " Add-Content -Path \"$ini\" -Value \"[client]`nuser=root\" -Encoding Ascii", "}" ], "post_install": [ "if (!(Test-Path \"$dir\\data\\auto.cnf\")) {", " warn 'Initializing data directory ...'", " Invoke-ExternalCommand -FilePath \"$dir\\bin\\mysqld.exe\" -ArgumentList '--initialize-insecure' | Out-Null", " warn 'Database has been initialized (username: root, password: <blank>)'", "}" ], "bin": [ "bin\\ibd2sdi.exe", "bin\\innochecksum.exe", "bin\\myisamchk.exe", "bin\\myisamlog.exe", "bin\\myisampack.exe", "bin\\myisam_ftdump.exe", "bin\\mysql.exe", "bin\\mysqladmin.exe", "bin\\mysqlbinlog.exe", "bin\\mysqlcheck.exe", "bin\\mysqld.exe", "bin\\mysqldump.exe", "bin\\mysqlimport.exe", "bin\\mysqlshow.exe", "bin\\mysqlslap.exe", "bin\\mysql_config_editor.exe", "bin\\mysql_secure_installation.exe", "bin\\mysql_tzinfo_to_sql.exe", "bin\\my_print_defaults.exe", "bin\\perror.exe" ], "persist": ["data", "my.ini"], "checkver": "MySQL Community Server ([\\d.]+)" }
命令行运行 专门在自定义bucket范围内寻找软件的命令:
"MyBucket": 自定义的bucket名称
"mysql" : 这个名字由 bucket中的 .json 文件名决定
"@8.0.30" : 由.json文件中的 version 字段决定
scoop install MyBucket/mysql@8.0.30
scoop 启动!
从别人仓库复制的mysql.json中,有一个bin配置
"bin": [ "bin\\ibd2sdi.exe", "bin\\innochecksum.exe", "bin\\myisamchk.exe", "bin\\myisamlog.exe", "bin\\myisampack.exe", "bin\\myisam_ftdump.exe", "bin\\mysql.exe", "bin\\mysqladmin.exe", "bin\\mysqlbinlog.exe", "bin\\mysqlcheck.exe", "bin\\mysqld.exe", "bin\\mysqldump.exe", "bin\\mysqlimport.exe", "bin\\mysqlshow.exe", "bin\\mysqlslap.exe", "bin\\mysql_config_editor.exe", "bin\\mysql_secure_installation.exe", "bin\\mysql_tzinfo_to_sql.exe", "bin\\my_print_defaults.exe", "bin\\perror.exe" ],
我在自己的mysql-8.0.30-winx64.zip中,一个一个的搜索,确认了所有的.exe文件都存在。
根据后来运行scoop时的结果,bin中的.exe文件都放到了 shim 文件夹中
安装好之后,尽管命令行已经没有正确运行mysql,但至少计算机知道确实存在mysql指令了。
根据测试,上面的mysql.json文件已经把mysql的环境变量弄好了,你不需要再配置环境变量了。
配置mysql
接下来的内容,就是 windows 如何使用mysql压缩包安装mysql了,已经与Scoop无关了。
接下来你需要新建mysql.ini 文件,放入Scoop\InstallationFileDirectory\apps\mysql\current\data\目录下:
[mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:\Developer\Scoop\InstallationFileDirectory\apps\mysql\current # 设置mysql数据库的数据的存放目录,data就是你以后创建的数据库存放的位置 datadir=D:\Developer\Scoop\InstallationFileDirectory\apps\mysql\current\data # 此处同上 # 允许最大连接数 max_connections=200 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8
为 windows 安装mysql服务
mysqld install
查看mysql服务,默认的是停止状态,我们需要手动启动它,点击启动就行
或者命令 :net start MySQL
测试:mysql --version
验证安装是否成功:第一次没有设置密码,直接回车 进入
mysql -u root -p -u :uers用户名 root -p :password 密码
【注意】默认状态下,mysql root账号密码为空,这将会使得第三方工具无法连接mysql。
修改root密码:
切换数据库到 mysql
use mysql;
检查 user 表的 authentication_string 字段 是否为空。
select authentication_string from user;
如果不为空,将该字段设置为空(不是 空格字符):
update user set authentication_string='' where user='root';
修改密码
alter user 'root'@'localhost' identified by '新密码';
push MyBucket
既然mysql安装无误,说明 mysql.json配置正确,可以把它push到远程库了。
在MyBucket文件目录下 git bash here
git add bucket/mysql.json
本文作者:DriftingAE86
本文链接:https://www.cnblogs.com/theSunAndSnow/p/18724080
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人