开发 Windows 下的 mysql 安装

· 发布于 8个月前 · 187 次阅读
本帖最后由 阳 于 2018-11-06 08:21:17 编辑。

下载 Mysql 和 Mysql GUI tools

下载后我分别解压到 D:\\opt\\mysqlD:\\opt\\MySQL GUI Tools 5.0 目录下。

配置 my.ini

拷贝 D:\\opt\\mysql 目录下的 my-small.ini 重命名为 my.ini (如果没有就新建一个 my.ini)。 添加或者修改一些配置选项:

[mysql]     
default-character-set=utf8
 
[mysqld]       
port = 3306    
character-set-server = utf8
basedir=D:\\opt\\mysql\\
datadir=D:\\opt\\mysql\\data\\  
max_connections=200

小于 MySQL5.7 版本的安装

安装mysql服务, 进入安装目录\bin,执行:(注意要进入安装目录再安装,不能设置环境变量后任意目录安装)

初始化数据库

D:\opt\mysql\bin> mysqld --initialize-insecure --defaults-file=D:\opt\mysql\my.ini

安装为服务

D:\opt\mysql\bin> mysqld --install
Service successfully installed.

如果将来想要删除服务

D:\opt\mysql\bin> mysqld -remove

启动 mysql

net start mysql

更改数据库管理员 root 的密码

Mysql 中默认有个名为 mysql 数据库,这个是 Mysql 系统数据库,用来保存数据库用户、权限等等很多信息。要更改密码,就要操作 Mysql 数据库的 user 表。

以下操作中的 NEW-PASSWORD 替换为你自己的密码。

D:\opt\mysql\bin> mysql -u root mysql
...
...
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> update user set password=password('NEW-PASSWORD') where user='root';
   Query OK, 0 rows affected (0.00 sec)
   Rows matched: 3 Changed: 0 Warnings: 0

mysql> flush privileges;
   Query OK, 0 rows affected (0.00 sec)

mysql> select user,password,host from user;
+------+-------------------------------------------+-----------+
| user | password                                  | host      |
+------+-------------------------------------------+-----------+
| root | *×××××××××××××××××××××××××××××××××××××××× | localhost |
| root | *×××××××××××××××××××××××××××××××××××××××× | 127.0.0.1 |
| root | *×××××××××××××××××××××××××××××××××××××××× | ::1       |
|      |                                           | localhost |
+------+-------------------------------------------+-----------+
4 rows in set (0.00 sec)

mysql> quit;
bye

设置 root 密码方法二

D:\opt\mysql\bin> mysqladmin -u root password "NEW-PASSWORD"

Mysql GUI tools 加载不了配置的解决方法

修改注册表中的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQL 中的 ImagePath 项为 D:\opt\mysql\bin\mysqld --defaults-file=D:\opt\mysql\my.ini MySQL

一些 mysql 的管理

启动服务:mysqld --console
客户端登录:mysql -u root -p
创建数据库:mysql> create database testDB;
切换数据库:mysql> use testDB;
创建新用户:mysql> create user test;
停止服务:mysqladmin -u root shutdown
备份MySQL数据库: mysqldump -h localhost -u 用户名 -p 数据库名 > 导出的文件名 

备份MySQL数据库为带删除表的格式, 能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump --add-drop-table -u username -p databasename > backupfile.sql

还原数据库
mysql -h hostname -u username -p databasename < backupfile.sql

注:mysql5.7

上面 mysqld --initialize-insecure 是生成 root 用户,密码为空。 mysql5.7 好像默认没有 password 字段,按上面步骤会出现 mysql 服务无法启动

D:\opt\mysql\bin> net start mysql
MySQL 服务正在启动 .
MySQL 服务无法启动。

服务没有报告任何错误。

请键入 NET HELPMSG 3534 以获得更多的帮助。

先把 mysql 目录下的 data 目录先删除,用下面命令重新生成 data 目录

D:\opt\mysql\bin> mysqld --initialize --user=root --console
2018-04-13T00:37:01.127715Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-04-13T00:37:03.056478Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-04-13T00:37:03.655073Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-04-13T00:37:03.942824Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: c96f7081-3eb2-11e8-9663-00e04c37bb2f.
2018-04-13T00:37:04.054643Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-04-13T00:37:04.317355Z 1 [Note] A temporary password is generated for root@localhost: ;e8Oh%=xgrF<

上面生成了一个随机密码 ;e8Oh%=xgrF<, 用它登录 mysql

D:\opt\mysql\bin>mysql -u root mysql -p
Enter password: ************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.20

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> update user set password=password('NewPass') where user='root';
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass';
Query OK, 0 rows affected (0.02 sec)

mysql> select user,password,host from user;
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
mysql> select user,host from user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)

mysql> quit
Bye

共收到 0 条回复