卸载MySQL(没有安装过MySQL不用处理)

1、停止MySQL的服务

控制面板->管理工具->服务,找到MySQL停止后台服务。或者右键我的电脑->管理->服务,找到MySQL停止后台服务。

删除mysql服务:sc delete mysql(cmd执行该命令)

2、卸载MySQL

控制面板->程序和功能,找到MySQL进行卸载。

3、删除MySQL安装目录下的所有文件。

4、显示隐藏文件,并删除C盘ProgramData隐藏目录下的有关MySQL的目录。

想要保留数据,就复制一份data下的文件!

5、"win+R"运行“regedit”文件,打开注册表。

1、删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL文件夹

2、删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL文件夹。

3、删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL的文件夹。

依次按目录路径操作即可。

如果没有相应的文件夹,就不用删除了。

安装MySQL

官网下载地址:https://dev.mysql.com/downloads/mysql/

mysql msi 装在D盘_sql

mysql msi 装在D盘_mysql_02

安装包解压

 

需要注意的一点,解压的路径尽量避免出现中文,不然后期会报错。

mysql msi 装在D盘_mysql_03

这里如果不这样子修改,后期可能会报错!亲测。

3.配置文件

3.1创建my.ini配置文件, 并且保存为ANSI格式

mysql msi 装在D盘_mysql_04

3.2把my.ini用你电脑上的代码编写器打开并粘贴一下代码。

[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
socket		= /tmp/mysql.sock
default-character-set=utf8

[mysqld]
# mysql服务的唯一编号,每个mysql服务ID需唯一
server-id=1
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir="C:/mysql/"
# 设置mysql数据库的数据的存放目录
datadir="C:/mysql/Data"
# 设置socket文件所在目录
socket		= /tmp/mysql.sock

# 这个值要大于导入的文件大小
max_allowed_packet=1024M
#max_allowed_packet = 16M
sort_buffer_size = 32M
net_buffer_length = 8K
read_buffer_size = 8M
read_rnd_buffer_size = 16M
myisam_sort_buffer_size = 64M
interactive_timeout = 2880000
wait_timeout = 2880000
query_cache_type = 1
query_cache_size = 64M
tmp_table_size = 128M
max_heap_table_size = 128M
bulk_insert_buffer_size = 64M

long-query_time = 10
# 主要用于MyISAM存储引擎,如果多太服务器连接一个数据库则建议注释下面内容
#skip-external-locking
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
#character-set-server=utf8
# 创建新表时将使用的默认存储引擎
#default-storage-engine=INNODB
# 默认是没有这个参数,默认值为0;这个参数的值如果大于0,innodb会被禁止使用insert、update、delete命令
innodb_force_recovery=0
default-storage-engine=MyISAM
#skip-grant-tables
# 默认使用“mysql_native_password”插件认证
#default_authentication_plugin=mysql_native_password

#innodb_page_size的参数值也影响最大索引长度,8k比16k的最大索引长度小
#innodb_page_size = 8192
#一般设置物理存储的60% ~ 70%
#innodb_buffer_pool_size = 1G 
#此格式支持压缩, 5.7.7之后为默认值
#innodb_file_format = Barracuda
# 开启innodb_file_per_table,在ALTER TABLE操作重建表的情况下,会将innodb表从系统共享表空间移动到独立的.ibd文件
#innodb_file_per_table=1
#5.7.7默认开启该参数 控制单列索引长度最大达到3072
innodb_large_prefix = 1
#innodb_file_format=Barracuda
#innodb_default_row_format=dynamic

sql_mode='NO_ENGINE_SUBSTITUTION'
#sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

#防止从表中导出数据到文件失败
secure_file_priv=''

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 256M
sort_buffer_size = 32M
read_buffer = 16M
write_buffer = 16M

[myisamchk]
key_buffer = 256M
sort_buffer_size = 32M
read_buffer = 16M
write_buffer = 16M

[mysqlhotcopy]
interactive-timeout

启动管理员模式下的CMD,将路径切换到MySQL下的bin目录,执行以下命令

1.安装mysql服务

mysqld --install mysql(服务名)

2.初始化数据文件

mysqld --initialize-insecure --user=mysql

打开mysql安装目录,会发现多了一个data文件夹,表示成功!

3.启动mysql服务

net start  mysql(服务名)

4.连接测试

mysql -u root -p

5.修改密码

update mysql.user set authentication_string=password('123456') where user='root' and Host='localhost';

最后输入flush privileges;刷新权限

成功之后,修改my.ini文件删除最后一句skip-grant-tables (跳过密码验证)

重启mysql服务即可正常使用

 

注意

Windows下创建符号链接函数

 

Qt访问数据库

找到Qt源码包,用VS打开,并设置好MySQL链接库,编译生成MySQL驱动

mysql msi 装在D盘_mysql_05

mysql msi 装在D盘_mysql msi 装在D盘_06

 

问题汇总

[Err] 1813 - Tablespace '`slg180801151808`.`cdb_upfc_ps`' exists.

解决办法:修改my.ini

default-storage-engine=MyISAM

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

解决办法:修改my.ini

sql_mode='NO_ENGINE_SUBSTITUTION'

[Err] 1030 - Got error 168 from storage engine

解决办法:修改my.ini

# 默认是没有这个参数,默认值为0;这个参数的值如果大于0,innodb会被禁止使用insert、update、delete命令

innodb_force_recovery=0