1.MySQL版本介绍
- MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户。
- MySQL Enterprise Edition 企业版本,需付费,不能在线下载,可以试用30天。提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户。
- MySQL Cluster 集群版,开源免费,用于架设集群服务器,可将几个MySQL Server封装成一个Server。需要在社区版或企业版的基础上使用。
- MySQL Cluster CGE 高级集群版,需付费。
此外,官方还提供了MySQL Workbench(GUITOOL)一款专为MySQL设计的图形界面管理工具。MySQLWorkbench又分为两个版本,分别是社区版(MySQL Workbench OSS)、商用版(MySQL WorkbenchSE)。
2.MySQL下载
1.官网下载页面:https://www.mysql.com/downloads/
下图参考地址:https://blog.csdn.net/KiWi_VC/article/details/128821761
3.MySQL8和MySQL5图形化安装方法
(Windows平台下提供两种安装文件:MySQL二进制分发版(.msi安装文件)和免安装版(.zip压缩文件)。一般来讲,应当使用二进制分发版,因为该版本提供了图形化的安装向导过程,比其他的分发版使用起来要简单。)
下图参考地址:https://blog.csdn.net/KiWi_VC/article/details/128821761
mysql --version #查看安装mysql版本(配置好环境变量后dos下)
4.MySQL8免安装版(.zip压缩文件)安装方法
1. 下载mysql(windows)版本为mysql8.0.28并进行解压到 D:\Software\MySQL8.0.28 路径下。
2. 配置环境变量 (到bin目录)
3.新建 my.ini配置文件(网上找到,其实还有很多配置,后面再研究吧),放到D:\Software\MySQL8.0.28目录
[mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] interactive_timeout=28800000 wait_timeout=28800000 # 设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:\Software\MySQL8.0.28\bin # 设置mysql数据库的数据的存放目录 datadir=D:\Software\MySQL8.0.28\data # 允许最大连接数 max_connections=200 # 设置mysql服务端默认字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB #跳过/禁止 DNS解析( 禁用DNS解析,使用ip连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式)(原由:https://bbs.csdn.net/topics/603542998) skip-name-resolve
4.管理员身份打开dos窗口,进入到 D:\Software\MySQL8.0.28\bin目录(网上说虽然配置了环境变量,但安装时还是要进入\bin目录下执行,否则会报错(未验证)):
1) 安装mysql服务 mysqld --install MySQL --defaults-file="D:\Software\MySQL8.0.28\my.ini"
这个命令是安装服务, 执行完后, 提示英文的成功, 这时候你可以在你的 windows 服务中看到 MySQL 的服务,移除服务命令为:mysqld --remove MySQL
2)初始化及生成/data文件(/data文件是存放数据文件的) mysqld --initialize
3)启动mysql服务 net start mysql (停止mysql服务命令是 net stop mysql)
4)查找密码 mysql8的版本跟以前5的版本不一样,要找随机生成的初始密码,进入刚刚生成的/data文件夹下,然后找到以.err为结尾的文件,然后搜索 temporary password即可找到初始随机密码
(这个地方我费了n长时间,重新安装了二次,网上查资料都说初始化时会告知密码,还有就是初始安装没有密码,让数密码时直接回车跳过就行,后来发现原因是版本问题,mysql8的版本密码生成策略跟旧版本不一样,浪费感情)
5) 登录 mysql -u root -p (root用户为安装后的默认用户)(退出登录: quit) 这个地方遇到些问题(问题1)
6)修改密码 alter user 'root'@'localhost'IDENTIFIED BY 'a123456'; 刷新权限: flush privileges;
5.新建用户并授权
1.root账号登陆mysql: mysql -u root -p; 输入密码后确认; 2.创建数据库(这里不想使用默认创建的mysql数据库,则可新建数据库): create database to_dgc_db; 3.创建新用户: create user 'mysqltest'@'to_dgc_db' identified by 'a123456';(注意密码安全要求) 4.授权 grant all privileges on to_dgc_db.* to mysqltest@'%' with grant option;(执行此步骤报42000错误 原因是mysql8.0以后版本不能用这个了) 解决如下: use mysql; #使用mysql数据库 update user set host='%' where user='mysqltest'; #特定用户的host修改 设置此数据库的访问白名单, host='%'为不受限制 grant all privileges on to_dgc_db.* to mysqltest@'%'; #指定用户的授权
(注意:如限制固定ip访问,则为 update user set host='192.168.1.27' where user='mysqltest';grant all privileges on to_dgc_db.* to mysqltest@'192.168.1.27' ;)
(注意:all privileges on to_dgc_db.* 表示to_dagc_db数据库所有权限。如果要赋予全部数据库的所有权限,可用grant all privileges on *.* to mysqltest@'%';)
5.刷新权限: flush privileges; 此时就完成了简单的数据库创建和新用户授权; (注意:上面的单引号复制出来可能会变,在执行脚本的时候需要改成英文状态下的单引号)
授权时报:
原因是mysql8的版本跟以前的版本有较大差异,网上查找解决办法:https://blog.csdn.net/zhouzhiwengang/article/details/102909298
6.navicat连接mysql数据库
之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,直接去连接Navicat会报错1251
解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password.
alter user mysqltest identified with mysql_native_password by 'a123456';#修改mysqltest用户的加密规则,及重新更新密码 alter user root identified with mysql_native_password by 'a123456';#修改root用户的加密规则,及重新更新密码
use mysql
select host,user,authentication_string,plugin from user; #查询mysql的所有用户及密码加密方式
ok了
之前装过一次是OK的,今天按同样步骤在新服务器上安装,但执行登录 mysql -u root -p 并输入密码后, 报错如下
网上查到很多,都是其他服务器的地址不在mysql访问白名单内,经过学习总结起来如下:
1):mysql -u root -p #输入密码登录
2):use mysql; #切换mysql数据库
3): update user set host = '%' where user = 'root'; #将root用户白名单设置为不限制访问
这步执行前 用 SELECT Host FROM mysql.user WHERE User ='root';查询结果如下,发现限制了只有localhost可以去访问数据库,问题根源就在这里。
因为在我的my.ini有个设置为skip-name-resolve(#禁止DNS解析,即只能ip访问),所以登录时才报上面的不允许访问的错误。
故先将此句注释掉,重启mysql,就可以使用 mysql -u root -p登录了。然后按照1、2、3、4步骤执行完成,(如还想禁止DNS解析, 可重新设置skip-name-resolve ,重启mysql。就可以了)
4) : grant all privileges on *.* to root@'%'; #付权限
5):FLUSH PRIVILEGES; #刷新权限
本文来自博客园,作者:东方飘雪,转载请注明原文链接:https://www.cnblogs.com/zdyang/p/16043375.html