MySQL版本共存,MySQL中的用户创建与授权
Ⅰ MySQL5.7和MySQL8.4共存
【一】前沿引入
- 已经在电脑上装了MySQL5.7版本,接下来是安装MySQL8.4版本步骤
【二】步骤如下
【1】官网下载想要的8.4版本包并解压
- 下载地址https://dev.mysql.com/downloads/mysql/
【2】本地操作
- 我下载到了E盘,注意尽量不要出现中文路径,以减少不必要的麻烦,下载之后需要手动添加my.ini 文件,我是直接复制了5.7版本的my.ini文件,并且修改端口号为3308
- my.ini文件
[mysqld]
port=3308
basedir=E:\MYSQL8\mysql-8.4.2-winx64
datadir=E:\MYSQL8\mysql-8.4.2-winx64\data
max_connections=200
max_connect_errors=10
character-set-server=utf8mb4
default-storage-engine=INNODB
[mysql]
default-character-set=utf8mb4
[client]
port=3308
default-character-set=utf8mb4
【3】配置环境变量并且关闭原来的MySQL服务
高级系统设置-环境变量-系统变量path-编辑-新建-复制bin文件夹所在目录-确定,参考我的下载目录输入的是E:\MYSQL8\mysql-8.4.2-winx64\bin,这里我删掉了原来版本的路径,只保留了8.4版本的。
- 关闭原来的MySQL服务步骤:此电脑-右键管理-服务和应用程序-服务-找到原来的MySQL-停用此服务,如下已关闭
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 如果这里不注意没有删去原来的环境变量,最后就会报错,无法连接端口,因为新的mysql他会优先选择第一个环境变量并使用,那么你就会用的就是5.7版本的环境变量 所以会报错,这里是先注意系统环境,具体报错会在后面补充
【4】 4.以管理员身份打开命令窗口,进入到bin路径下,执行命令参考如下:
- C:\WINDOWS\system32>E:
- E:>cd E:\MYSQL8\mysql-8.4.2-winx64
- E:\MYSQL8\mysql-8.4.2-winx64>cd bin
- E:\MYSQL8\mysql-8.4.2-winx64\bin>mysqld install mysql8 --defaults-file="E:\MYSQL8\mysql-8.4.2-winx64\my.ini"
Service successfully installed.
注意:这里的Mysql8防止服务名与已经安装的服务名重复,可自行命名
【5】安装后初始化数据库
- 安装后初始化数据库,在bin目录下执行 mysqld --initialize --console,初始化后会生成data文件夹,并且会在最后一行root@localhost:后显示初始生成的密码,用于后续登录;
【6】输入net start Mysql8启动服务,发现以下问题
- 问题在于MySQL服务的可执行文件路径不正确:
- 右键我的电脑—>管理—>服务—>找到自己mysql的服务—>右键属性打开,我发现我的Mysql8的路径中还使用的是原来5.7版本的路径,修改步骤如下:
- win+R输入regedit,按一下路径找到Mysql8的服务注册表,我是参考了我8.0版本的修改ImagePath为E:\MYSQL8\mysql-8.4.2-winx64\bin\mysqld mysql8,点击确定
【7】修改完上述后,我重新输入net start Mysql8启动服务
发现出现了如下问题,经过查阅其他人的经验,删除掉了刚开始自己创建的data文件夹,然后重新启动后就成功了。
- 删除data文件夹之前报错
- 删除后重新启动,终于启动成功了
【8】登陆成功
- 启动服务后在bin目录下使用mysql -P3308 -uroot -proot -p登录,密码为初始化时生成的密码,登录上去之后可以采用SET PASSWORD FOR root@localhost = '新密码'; 命令修改为自己想要的密码。
【9】再将5.7的环境变量添加上
- 然后尝试一下随时随地使用mysql5.7吧(mysql8.0服务一定得关闭)
【10】尝试在可视化工具中链接mysql8.4
Ⅱ MySQL中的用户创建与授权
【一】创建用户
- 可以简单地创建用户:
CREATE USER zyb;
- 也可以创建用户的同时设置密码:
CREATE USER zyb IDENTIFIED BY '123456';
- 也可以创建用户的时候,设置可以登录的Host:
# 只能在MySQL服务器登录
CREATE USER 'zyb'@localhost IDENTIFIED BY '12345678';
# or 只能在指定ip登录
CREATE USER 'zyb'@'192.168.10.1' IDENTIFIED BY '12345678';
# or 在所有ip都可以登录
CREATE USER 'zyb'@'%' IDENTIFIED BY '12345678';
说明:
- 用户名可以不指定Host,此时默认的Host就是%,表示在所有ip的主机都可以登录。
- 用户名会出现在如下sql语句中:CREATE USER , GRANT 和 SET PASSWORD。
- 如用户名中含特殊字符(如:空格 或 -),则必须使用引号。例如:test-user 或是xiao hui。
- 如主机名中含有特殊字符(如:. 或 %),则必须使用引号。例如:192.168.10.2 或是% 。
- 如果使用引号,用户名和主机名必须单独引用。如'test-user@192.168.10.%' 和'test-user'@'192.168.10.%' 是不同的。
【1】查看当前用户
可使用函数查看当前用户
mysql> select user() from dual;
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.03 sec)
【2】查看指定用户
SELECT User,Host,authentication_string FROM mysql.user WHERE User='zyb';
【3】查看所有的用户
SELECT User,Host FROM mysql.user;
【二】修改密码
【1】修改当前用户的密码
SET PASSWORD='3456789';
【2】修改指定用户的密码
SET PASSWORD FOR zyb='2345678';
-- or 更建议的密码修改方式(修改账号zyb的密码)
ALTER USER zyb IDENTIFIED BY '2345678';
【三】用户登录
- 打开命令行cmd,然后输入下面的命令:
mysql -u xh -p
# 提示输入密码
Enter password:
- 新创建的用户还没有授权,那么它的授权信息会是什么呢?
SHOW GRANTS;
- 那么再看一下它可以访问哪些数据库吧:
show databases;
【四】删除用户
- 删除账号zyb:
DROP USER 'zyb';
【五】授权操作
- 创建用户zyb,并只允许其查看my_database上t_user表的权限:
-- 方法一:
USE my_database;
GRANT SELECT ON TABLE t_user TO zyb;
-- or 方法二:
GRANT SELECT ON my_database.t_user TO zyb;
【六】查看授权
SHOW GRANTS FOR zyb;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY