今天,由于一个功能要用到mysql,所以下载了 mysql-8.0.33-winx64 的版本,突然发现,以前都是安装的Linux 版本,windows版本不会安装了,查看官网试着装了一次,记录本次经历:
软件下载
说明: 下载的官网 msyql官网 ,点击downloads
进入到最下面 有个
下载社区版
选择版本 :
我下载的是ZIP包,登录用户名/密码后就可以下载了
安装
加压安装包
我是放到 D:\install\mysql-8.0.33-winx64 这个路径下的
解压后发现一个奇怪的现象就是没有了 my.ini ,这是因为mysql的最新版本没有这个文件了需要自己添加并放在该目录下,如下图
在my.ini添加配置
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\install\mysql-8.0.33-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\install\mysql-datas # 这个目录需要自己建# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
mysql初始化
配置好后就需要做初始化了
用管理员身份打开cmd ,进入到bin 目录 D:\install\mysql-8.0.33-winx64\bin ,然后 执行 mysqld --initialize --console,一定要是管理员身份,不然可能会有异常!
mysqld --initialize --console
执行后 如下面的样子,其中A temporary password 就是临时密码了,这个要记下来,后面会用到
D:\install\mysql-8.0.33-winx64\bin>mysqld --initialize --console
2023-07-13T07:27:40.782491Z 0 [System] [MY-013169] [Server] D:\install\mysql-8.0.33-winx64\bin\mysqld.exe (mysqld 8.0.33) initializing of server in progress as process 16396
2023-07-13T07:27:40.828050Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-07-13T07:27:41.063140Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-07-13T07:27:41.655034Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: PgwfzVie<6sw
然后执行 mysqld --install ,这里还是管理员身份打开的cmd 窗口,进入到bin下执行额,不然有可能报错,另外啰嗦一句,这里需要点时间,不要着急,执行成功后会有 Service successfully installed. 提示,如下图。
D:\install\mysql-8.0.33-winx64\bin>mysqld --install
Service successfully installed.
安装好后进入 services.msc 查看可以看到mysql的服务,要是没有启动,先启动起来,不然登录不上去
我这里就是刚开始没有启动,登录失败了
当我启动后就登录成功了。这里输入的密码就是上面初始化的密码 。
登录成功后要修改密码
ALTER USER root@localhost IDENTIFIED BY '123456';
配置客户端连接
mysql> use mysql
Database changed
mysql> show tables;
+------------------------------------------------------+
| Tables_in_mysql |
+------------------------------------------------------+
| columns_priv |
| component |
| db |
| default_roles |
| engine_cost |
| func |
| general_log |
| global_grants |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| password_history |
| plugin |
| procs_priv |
| proxies_priv |
| replication_asynchronous_connection_failover |
| replication_asynchronous_connection_failover_managed |
| replication_group_configuration_version |
| replication_group_member_actions |
| role_edges |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+------------------------------------------------------+
38 rows in set (0.03 sec)
mysql> desc user;
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(255) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int unsigned | NO | | 0 | |
| max_updates | int unsigned | NO | | 0 | |
| max_connections | int unsigned | NO | | 0 | |
| max_user_connections | int unsigned | NO | | 0 | |
| plugin | char(64) | NO | | caching_sha2_password | |
| authentication_string | text | YES | | NULL | |
| password_expired | enum('N','Y') | NO | | N | |
| password_last_changed | timestamp | YES | | NULL | |
| password_lifetime | smallint unsigned | YES | | NULL | |
| account_locked | enum('N','Y') | NO | | N | |
| Create_role_priv | enum('N','Y') | NO | | N | |
| Drop_role_priv | enum('N','Y') | NO | | N | |
| Password_reuse_history | smallint unsigned | YES | | NULL | |
| Password_reuse_time | smallint unsigned | YES | | NULL | |
| Password_require_current | enum('N','Y') | YES | | NULL | |
| User_attributes | json | YES | | NULL | |
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
通过客户端dbeaver.exe 不能连接
问题描述 ,报错信息
Public Key Retrieval is not allowed Public Key Retrieval is not allowed
解决方案:
连接设置——驱动属性——allowPublicKeyRetrieval=false(这里的运输公钥检索是默认关闭的,需要把它开启),改为allowPublicKeyRetrieval=true即可
时区问题不对导致连接不上
报的错误日志信息如下:
The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
You must configure either the server or JDBC driver (via the serverTimezone configuration
property) to use a more specifc time zone value if you want to utilize time zone support.
这是因为安装mysql的时候时区设置的不正确,mysql默认的是美国的时区,而我们中国大陆要比他们迟8小时,采用+8:00格式。
解决方法:修改MySQL的配置文件,在mysql的安装目录下D:\install\mysql-8.0.33-winx64找到my.ini【就是前面自己加的那个文件】。然后打开,在[mysqld]节点在节点下面加上:default-time-zone=‘+08:00’。如下配置
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\install\mysql-8.0.33-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\install\mysql-datas# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 时区设置
default-time-zone='+08:00'
配置完了后,需要重启服务才能够生效。这里就有个问题了,怎么重启服务呢??
windows下重启服务
这个最简单的方法就是进入 服务模块(cmd 下 输入 services.msc 就进去了)
然后找到mysql服务,停止后再启动就ok 了 ,如下图。
当然可以用其他的命令行重启哈。重启过后再用客户端连接就OK了!