卸载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/
安装包解压
需要注意的一点,解压的路径尽量避免出现中文,不然后期会报错。
这里如果不这样子修改,后期可能会报错!亲测。
3.配置文件
3.1创建my.ini配置文件, 并且保存为ANSI格式
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服务即可正常使用
注意
- 现有
.sym
文件现在被忽略。应使用mklink重新创建数据库符号链接 。请参阅 在Windows上为数据库使用符号链接。例如:mklink /d mydb D:\data\mydb - the --symbolic-links和 --skip-symbolic-links options和 have_symlink系统变量现在只对Unix系统有意义,而不适用于Windows。
Windows下创建符号链接函数
Qt访问数据库
找到Qt源码包,用VS打开,并设置好MySQL链接库,编译生成MySQL驱动
问题汇总
[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