MySql卸载和安装

lishihuan大约 18 分钟

MySql卸载和安装

win下安装

参考:https://blog.csdn.net/weixin_43605266/article/details/110477391open in new window

https://www.yuque.com/yutoujun-jg4gf/mw1ins/uietwfopen in new window

https://www.yuque.com/penghaoren/oia9gg/beqmgaopen in new window

1. 安装:

总共有2中安装方式:

  • 下载 ZIP
  • msi

1.1 通过ZIP

下载路径:https://dev.mysql.com/downloads/mysql/open in new window

参考:https://blog.csdn.net/weixin_43605266/article/details/110477391open in new window

1.2 通过msi

下载路径:https://dev.mysql.com/downloads/windows/installer/8.0.htmlopen in new window

参考:https://blog.csdn.net/The_girl_wait_me/article/details/124609881open in new window

https://zhuanlan.zhihu.com/p/164991093?ivk_sa=1024320uopen in new window

1.双击 .msi文件

等待启动,选择安装模式,选择Custom

image-20220918214843654
image-20220918214843654
2. 选择安装路径以及数据库存放路径

选中MySQL Servers 8.0.29 -X64,下方会出现Advanced Options超链接

接下来就是选择安装路径了,单击上一步出现的蓝字“Advanced Options”,出现下面的界面。第一个位置就是MySQL的安装路径,第二个位置是存放数据用的,建议两个路径分开,不要放在一起。路径下出现的感叹号不要去管它。直接点击“OK”。

image-20220918214951318
image-20220918214951318
3.等待安装完成,点击next进行配置
4.配置MySQL

这一步直接选择第一个(独立的MySQL服务器/经典MySQL复制),然后点击“next”

image-20220918215634192
image-20220918215634192
5. 配置安装类型和网络

Development Computer:开发机,该类型应用将会使用最小数量的内存。

Server Computer:服务器,该类型应用将会使用中等大小的内存。

Dedicated Computer:专用服务器,该类型应用将使用当前可用的最大内存。

使用开发者模式,协议、端口使用默认即可,配置如下

image-20220918215732197
image-20220918215732197
6.选择加密方式

MySQL 8.0 更改了加密方式,使得数据更加安全,使用默认的即可

image-20220918220009337
image-20220918220009337
7.设置密码和用户

设置root用户的密码,这里直接设置密码和确认密码,不需要再新建用户

8.设置服务

设置右击电脑→管理中MySQL服务名,以及跟随电脑启动而启动,使用默认

9.配置环境变量

Path 添加D:\Program Files\MySQL\MySQL Server 8.0\bin

执行 mysql --version 查询到mysql 版本

10.登录MySQL

登录MySQL:mysql -u root -p 回车后输入root用户密码,密码正确可以直接登录


3.数据库备份

3.1 通过到处sql文件

1.导出

img
img

2.导入

第一步:新建数据库

需要保证数据库名和 导出的文件名一致,同时设置字符集和排序规则,这2个信息可以从 导出的sql文件中查询到

image-20220810100241816
image-20220810100241816

第二步:将导出的文件运行到数据库中

右击选则 运行SQL 文件

image-20220810100510317
image-20220810100510317

3.2 通过navicat 的备份\还原功能

参考:https://blog.csdn.net/qq_38105536/article/details/104061074open in new window

备份的文件存储位置 C:\Users\lihuan\Documents\Navicat\MySQL\Servers

1. 备份

选择数据库,点击新建备份--> 等待备份完成
image-20220902101111851
image-20220902101111851

2. 还原数据库

  • 新建数据库
image-20220902101523228
image-20220902101523228
  • 输入数据库名称、字符集、排序规则,点击确定
-- 字符集
show variables like '%character%';
--  排序规则
show variables like 'collation%';
image-20220902101704692
image-20220902101704692
  • 选择数据库,点击备份、还原备份
image-20220902102315242
image-20220902102315242

https://www.cnblogs.com/brightgreat/p/13198299.htmlopen in new window

cmd 下登陆: mysql -h localhost -P 9060 -uroot -pSemdo@123

mysql -h localhost -u root -p

卸载

卸载本地mysql之前,请务必要先将需要的数据库备份

停止mysql 服务

windows键-->搜索服务 找到mysql 服务,并停止他

img
img

在控制面板--程序 找到 mysql server 并卸载

将MySQL安装目录下的MySQL文件夹删除(我的安装目录是C:\Program Files (x86)\MySQL)

运行“regedit”文件,打开注册表。 删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL文件夹 删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL文件夹。 删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL的文件夹。 如果没有相应的文件夹,就不用删除了。

删除C盘下的“C:\ProgramData\MySQL ”文件夹 删除不了,就是用管理员权限删除,或者使用第三方管理工具进行粉碎,比如电脑管家的文件粉碎,360的文件粉碎

该programData文件默认是隐藏的,设置显示后即可见,将整个MySQL文件夹删除掉

再次打开服务

查看是否还有mysql 服务存在,如果存在,那么,就直接使用管理员权限启动cmd ,执行sc delete 服务名 例如:sc delete MySQL 显示成功,即表示服务成功删除,

重启电脑

安装

mysql 官网下载自己想要的版本

https://dev.mysql.com/downloads/file/?id=501136open in new window

下载完成后解压

  • 配置初始化的my.ini文件的文件

解压后的目录并没有的my.ini文件,没关系可以自行创建在安装根目录下添加的my.ini(新建文本文件,将文件类型改为的.ini),写入基本配置:

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=C:\Program Files\MySQL
# 设置mysql数据库的数据的存放目录
datadir=C:\Program Files\MySQL\Data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

配置文件中的路径要和实际存放的路径一致(8.0.18不要手动创建Data文件夹)

1.右键以管理员身份运行 打开后进入mysql的bin目录

在MySQL目录下的bin目录下执行命令:

mysqld --initialize --console

注意:在没有更改密码前,需要记住这个密码 这个临时密码 generated for root@localhost: dVb0>evcqiOu

  • 安装MySQL服务 + 启动MySQL 服务

安装mysql服务

执行下面的命令:

服务安装成功之后通过命令

启动:net start mysql
关闭:net stop mysql

修改密码

cmd bin 目录下 mysql -h localhost -u root -p

输入初始密码:dVb0>evcqiOu

设置新密码:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

linux下安装MySQL

https://blog.csdn.net/Bb15070047748/article/details/106245223open in new window

https://blog.csdn.net/m0_37739193/article/details/77477547open in new window

https://blog.csdn.net/bai_shuang/article/details/122939884open in new window

日志:tail -111f /var/log/mysqld.log

1. 官网下载rpm

建议在Linux 系统上安装MySQL的⽅法是通过RPM

查询MySQL的版本yum list available | grep mysql

官网:https://downloads.mysql.com/archives/community/open in new window

image-20230827211355177
image-20230827211355177

2. 解压

tar xvf mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar

3. 安装

先删除 mariadb-libs 软件包

sudo yum remove mariadb-libs

目前如果只作为数据库使用,只用安装下面4个

安装 mysql-community-server 需要mysql-community-client,而它又需要mysql-community-commonmysql-community-libs

此时可以在/usr/bin和/usr/sbin中找到所有与MySQL相关的⼆进制⽂件,所有的表和数据库都将在/var/lib/mysql⽬录中创建

sudo yum install mysql-community-common-5.7.17-1.el7.x86_64.rpm -y
sudo yum install mysql-community-libs-5.7.17-1.el7.x86_64.rpm -y
sudo yum install mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm -y
sudo yum install mysql-community-client-5.7.17-1.el7.x86_64.rpm -y
sudo yum install mysql-community-server-5.7.17-1.el7.x86_64.rpm

**异常报错1:**在安装 mysql-community-common-5.7.17-1.el7.x86_64 时可能会失败,是因为该包和 mariadb-libs-1:5.5.56-2.el7.x86_64 这个包的文件发生了冲突

要解决这个问题,你需要先卸载掉原来的 mariadb-libs 包,然后再安装 mysql-community-common 包。可以使用以下命令完成:

  1. 卸载 mariadb-libs 包:
sudo yum remove mariadb-libs
  1. 安装 mysql-community-common 包:
sudo yum install mysql-community-common

异常报错2:

错误:软件包:mysql-community-server-5.7.17-1.el7.x86_64 (/mysql-community-server-5.7.17-1.el7.x86_64) 需要:mysql-community-client(x86-64) >= 5.7.9 您可以尝试添加 --skip-broken 选项来解决该问题 您可以尝试执行:rpm -Va --nofiles --nodigest

解决该问题的方法有两种:

  1. 通过添加 --skip-broken 选项来跳过依赖关系错误,但这可能导致软件包无法正常工作。
sudo yum install mysql-community-server-5.7.17-1.el7.x86_64.rpm --skip-broken
  1. 安装满足依赖关系的 mysql-community-client 包,再安装 mysql-community-server 包。
sudo yum install mysql-community-libs-5.7.17-1.el7.x86_64.rpm
sudo yum install mysql-community-client-5.7.17-1.el7.x86_64.rpm
sudo yum install mysql-community-server-5.7.17-1.el7.x86_64.rpm

安装包下的各个文件说明

  1. 共享库和公共组件:

    sudo yum install mysql-community-common-5.7.17-1.el7.x86_64.rpm
    
  2. 客户端:

    sudo yum install mysql-community-client-5.7.17-1.el7.x86_64.rpm
    
  3. 开发库和头文件(如果需要进行应用程序开发):

    sudo yum install mysql-community-devel-5.7.17-1.el7.x86_64.rpm
    
  4. 嵌入式库(如果需要将 MySQL 嵌入到应用程序中):

    sudo yum install mysql-community-embedded-5.7.17-1.el7.x86_64.rpm
    
  5. 附加的兼容性库(如果需要与旧版兼容):

    sudo yum install mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm
    
  6. 服务器及其相关组件:

    sudo yum install mysql-community-server-5.7.17-1.el7.x86_64.rpm
    
  7. 测试套件(可选):

    sudo yum install mysql-community-test-5.7.17-1.el7.x86_64.rpm
    

4. 启动MySQL

systemctl start mysqld
systemctl restart mysqld
systemctl status mysqld ## 查看启动状态

5. 关闭

systemctl stop mysqld
mysql -uroot -proot shutdown
exit

6. 查看mysql服务状态

  1. systemctl status mysqld
[root@localhost mysql]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2023-08-27 21:13:19 CST; 8min ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 2177 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 2104 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 2181 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─2181 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid


  1. ps -ef | grep mysqld

7. 修改临时密码

grep 'temporary password' /var/log/mysqld.log
[root@localhost bin]# grep 'temporary password' /var/log/mysqld.log
2023-08-27T13:13:16.748395Z 1 [Note] A temporary password is generated for root@localhost: +)mao!;kj9lF

使用临时密码先登录

从上面看 当前临时密码 +)mao!;kj9lF 因为存在特殊字符,所以加上引号,复制无法登录

mysql -uroot -p'+)mao!;kj9lF'

修改密码

set global validate_password_policy=LOW;  # 把MySQL的密码校验强度改为低风险

set global validate_password_length=5;  # 修改MySQL的密码长度

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';   #  修改MySQL密码 [  ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@1234';  ]
exit; # 退出mysql

添加用户,设置密码,并且创建数据库

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
use mysql;
update user set Host="%" where User="root";
create database chat character set = utf8mb4;

允许远程访问

修改MySQL允许任何人连接

1)首先登录MySQL

mysql -uroot -p123456

2)切换到mysql数据

use mysql;

3)查看user表

select Host,User from user;
image-20230827220809290
image-20230827220809290

发现root用户只允许localhost主机登录登录。

4)修改为允许任何地址访问

update user set Host='%' where User='root';

待研究

当前如果执行了update user set Host='%' where User='root'; 语句,此时修改密码ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; 会失效。目前没有尝试出来该如何改造只能先将Host 改回去,

  • UPDATE mysql.user SET Host='localhost' WHERE User='root' AND Host='%';
  • FLUSH PRIVILEGES;
  • ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; 修改密码,此时可能会提示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,那是因为 密码不满足当前策略要求
  • use mysql;
  • update user set Host='%' where User='root'; 修改回 否则除了主机其他地址无法访问数据库
  • FLUSH PRIVILEGES;

5)刷新权限

flush privileges;

注:遇到过一次场景,设置Host='%' 可以访问,但是设置为localhost或者127.0.0.1 本机就无法访问,需要设置 update user set Host='::1' where User='xxxx';

6)赋权

使用 GRANT 命令为 auditadmin 用户授予所有权限。

使用WITH GRANT OPTION; 才能给其他角色也赋予 赋权的权限

GRANT ALL PRIVILEGES ON *.* TO 'auditadmin'@'::1' WITH GRANT OPTION;
  • ALL PRIVILEGES 表示赋予 auditadmin 用户对所有数据库的所有权限。
  • *.* 表示所有数据库和所有表。
  • WITH GRANT OPTION 允许 auditadmin 用户将自己拥有的权限授权给其他用户。
ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'xxxx';

开机启动

vi /etc/rc.local
systemctl enable mysqld

最后,您可以使用以下命令验证MySQL是否已经成功开机自启动:

systemctl is-enabled mysqld 如果显示“enabled”,则表示MySQL已经设置为开机自启动。

修改配置文件

配置文件/etc/my.conf 如果找不到可以搜索 sudo find / -name "my.cnf"

修改后重启 systemctl restart mysqld;

  • systemctl stop mysqld; ## 关闭
  • systemctl start mysqld # 启动
  • 忽略大小写
lower_case_table_names=1
  • 开启日志

show variables like '%log%';

image-20240428183330245
image-20240428183330245
general_log = ON
general_log_file = /path/to/your/logfile ## 可不填写
  • 设置时区
# 设置时区
default-time-zone=Asia/Shanghai
log_timestamps = SYSTEM

卸载

  1. 停止MySQL服务:

    sudo systemctl stop mysqld.service
    
  2. 卸载MySQL软件包:

    sudo yum remove mysql-server mysql
    sudo yum remove mysql-community-server mysql-community-client mysql-community-libs
    
  3. 删除MySQL数据目录(可选):

    shell复制代码sudo rm -rf /var/lib/mysql
    
  4. 清理MySQL配置文件(可选):

    sudo rm -rf /etc/my.cnf
    
  5. 清理残留文件和目录(可选):

    sudo rm -rf /var/log/mysqld
    sudo rm -rf /var/run/mysqld
    
  6. 刷新系统包管理器的缓存:

    sudo yum clean all
    
  7. 查找和删除所有与MySQL相关的文件和目录:

sudo find / -name mysql
sudo find / -name my.cnf

创建mysql新用户

CREATE USER 'test'@'%' IDENTIFIED BY '123';

备注上面@后的命令解释

  • '%' - 所有情况都能访问
  • ‘localhost’ - 本机才能访问
  • ’111.222.33.44‘ - 指定 ip 才能访问
  • 创建的用户会在 mysql.user 表中

给用户授予权限

grant all on 数据库名.数据库表 to 用户名@'%'  identified by "密码";

# 给root设置全部权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

备注

  • all 可以替换为 select,delete,update,create,drop
  • 数据库名 所有的 用
  • 数据库表 所有的 用

说明

需要语句中以 分号结尾,否则无法识别语句结束

注意-MySQL不会终⽌命令,直到您在SQL命令的末尾加上分号(;)为⽌。

mysql> select * from user
    -> 
    -> ;

2. windows下安装

通过zip的方式安装mysql8.x 并且服务名称为 mysql8

  • 下载ZIP安装包
  • 创建my.ini

1. 初始化数据库

在管理员权限的CMD/PowerShell中执行以下命令之一:

  • 安全模式(生成随机密码)

    mysqld --initialize --console
    

    执行后会生成临时密码(如 A temporary password is generated for root@localhost: xxxxxx),需记录该密码。

  • 非安全模式(无密码)

    mysqld --initialize-insecure
    

    此方式初始化后,root用户无密码,但首次登录后仍需设置密码。

注意

  • 若初始化无反应,可能是缺少Microsoft Visual C++ Redistributable组件(需安装VC++ 2019或更高版本)。
  • 确保my.ini中的basedirdatadir路径正确(路径中避免特殊字符,建议用/或双反斜杠\\)。

2. 安装MySQL服务

执行以下命令,将服务名指定为MySQL8

mysqld --install MySQL8 --defaults-file="D:\Program Files\MySQL\mysql-8.0.23\my.ini"
  • --defaults-file需指向你的my.ini绝对路径。

  • 若提示服务已存在,需先删除旧服务:sc delete MySQL80

    • 针对 删除服务【sc query type= service state= all | findstr MySQL】-- 查询服务名

      • sc delete MySQL8 无法删除
      sc stop MySQL8
      sc delete MySQL8
      
      C:\Users\Administrator>sc delete MySQL8
      [SC] OpenService 失败 1060:
      
      指定的服务未安装。
      
      • 停止 MySQL 服务进程
      tasklist | findstr mysqld
      taskkill /F /PID <PID>
      # 验证服务是否还存在 【提示 1060 指定的服务未安装,说明服务已经彻底清理】
      sc query MySQL8
      
      

      MySQL卸载脚本


3. 启动服务

net start MySQL8

若启动失败,检查错误日志(data目录下.err文件)。


4. 登录并修改密码

  • 若使用--initialize初始化

    mysql -u root -p
    

    输入记录的临时密码,进入后立即修改密码:

    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
    
  • 若使用--initialize-insecure初始化: 免密

    mysql -u root --skip-password
    

    直接进入后设置密码:

    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
    

5. 验证配置生效

执行以下命令检查字符集、端口等配置是否与my.ini一致:

SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'port';

常见问题解决

  • 端口冲突:修改my.ini中的port=3306为其他值(如3307)。
  • 数据目录权限问题:确保datadir目录有写入权限。
  • 服务无法启动:检查my.ini路径是否正确,或尝试重新初始化。
  • 忘记临时密码:安装忘记密码

通过以上步骤,你的MySQL服务将以MySQL8名称运行,且配置由my.ini文件控制。如需进一步优化(如调整连接数、时区等),直接修改my.ini后重启服务即可。

mysqld --initialize-insecure

 mysqld --install MySQL8 --defaults-file="D:\Program Files\MySQL\mysql-8.0.23\my.ini"

docker容器中安装MySQL

docker安装mysql

使用记录

1. windows中启动失败-报错1058

mysql启动时报发生系统错误 1058

是因为,服务被禁用了,需要改为手动或者自定,然后启动它

image-20230905185847342
image-20230905185847342

无法启动提示配置文件问题

mysql: [ERROR] Found option without preceding group in config file xxx\my.ini at line 1!
mysql: [ERROR] Fatal error in defaults handling. Program aborted!

my.ini这个文件要保存为ANSI格式

安装忘记密码

根据您的需求,以下是查询MySQL临时密码的详细方法,综合了多个可靠来源的解决方案:

1. 从初始化日志中直接获取

在Windows系统初始化MySQL时,若使用--console参数,临时密码会显示在控制台输出中。例如:

mysqld --initialize --console

输出中会包含类似以下信息:

[Note] A temporary password is generated for root@localhost: xqWlxlV3p.a8

注意:必须确保首次初始化时添加--console参数,否则不会显示密码。

2. 从错误日志文件中查找

若初始化时未记录密码,可通过以下路径查找MySQL错误日志:

  • 默认日志路径
    • Windows: C:\ProgramData\MySQL\MySQL Server 8.0\data\*.err
    • Linux: /var/log/mysqld.log/var/log/mysql/error.log

使用命令行快速检索:

# Windows (PowerShell)
Select-String "temporary password" "C:\ProgramData\MySQL\MySQL Server 8.0\data\*.err"

# Linux/macOS
grep 'temporary password' /var/log/mysqld.log

日志中会显示类似A temporary password is generated for root@localhost: 密码的行。

3.重新初始化并强制生成密码

若日志文件被清除或无法找到,可删除数据目录后重新初始化:

# 停止并删除旧服务(Windows)
sc delete MySQL8

# 删除数据目录(确保备份重要数据)
rmdir /s /q "C:\ProgramData\MySQL\mysql_data\data"

# 重新初始化
mysqld --initialize --console

此操作会生成新的临时密码。

4. 无密码登录重置(终极方案)

若上述方法均无效,可通过跳过权限验证重置密码:

# 停止MySQL服务
net stop MySQL8

# 跳过权限表启动
mysqld --skip-grant-tables --shared-memory

# 新窗口登录并修改密码
mysql -u root

在MySQL命令行中执行:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;

完成后重启服务即可。

常见问题

  • 密码复杂度要求:MySQL 8.0默认要求密码包含大小写字母、数字和特殊字符,否则会报错ERROR 1819
  • 服务启动失败:检查数据目录权限或端口冲突(如3306被占用)。

通过以上方法,您应能成功获取或重置临时密码。如需进一步优化配置(如调整密码策略),可修改my.ini中的validate_password参数。

登录失败

1. 直接登录MySQL(无需密码)

mysql -u root --skip-password

登录后立即设置密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;

2. 如果无法登录(服务已启动)

若MySQL服务已在运行(日志显示ready for connections),但登录被拒绝:

  • 步骤1:停止MySQL服务
    net stop MySQL8
    
  • 步骤2:以跳过权限表的方式启动
    mysqld --skip-grant-tables --shared-memory
    
  • 步骤3:新窗口登录并强制改密码
    mysql -u root
    
    UPDATE mysql.user SET authentication_string='' WHERE User='root';
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    
  • 步骤4:重启服务
    net start MySQL8
    

⚠️ 注意事项

  1. 密码复杂度要求
    MySQL 8.0默认要求密码包含:

    • 大小写字母
    • 数字
    • 特殊字符
      否则会报错ERROR 1819。可临时关闭校验:
    SET GLOBAL validate_password.policy=LOW;
    
  2. 初始化参数区别

    参数行为适用场景
    --initialize生成随机临时密码生产环境
    --initialize-insecure空密码测试/快速部署
  3. 日志文件位置
    若需检查完整日志,路径通常在:
    C:\ProgramData\MySQL\mysql-8.0.23\data\主机名.err


📌 推荐操作

  1. 重新初始化(生产环境建议)
    # 删除旧数据
    rmdir /s /q "C:\ProgramData\MySQL\mysql_data\data"
    
    # 重新初始化并生成临时密码
    mysqld --initialize --console
    
  2. 检查服务配置
    确保my.ini中无--initialize-insecure参数残留。

通过以上步骤,您可安全地访问MySQL并设置密码。如有其他问题,可检查错误日志中的[ERROR]条目进一步排查。

创建只读账号

1. 创建用户

CREATE USER 'readonly'@'%' IDENTIFIED BY 'your_password';
  • 'readonly' → 用户名
  • '%' → 允许从任何主机登录(你也可以改成 'localhost' 或指定 IP)
  • 'your_password' → 登录密码

2. 赋予只读权限(指定数据库)

比如对 mydb 数据库授予只读权限:

GRANT SELECT ON mydb.* TO 'readonly'@'%';
  • mydb: 指定数据库

3. 刷新权限

FLUSH PRIVILEGES;

这样 readonly 用户就只能查询(SELECT),不能修改数据。


如果你想要:

  • 只允许登录,不允许任何操作 → 创建用户但不给任何权限。
  • 只读某些表 → 把 mydb.* 改成 mydb.table_name

要不要我帮你写一个 完整 SQL 脚本(包含只读 + 禁止修改 + 禁止建库建表),你直接复制执行就能用?