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;

posted on   silence^  阅读(47)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示