Mysql中文乱码问题。 安装MySql没有my.ini文件时的配置

客户端cmd打开mysql,执行插入中文报错或插入中文乱码解决方案
最近在制作一个安装包,需要安装的时候执行mysql脚本儿,做了一个批处理,但是发现总是执行到 插入中文的时候报错,或者插入中文是乱码。

网上查了好多资料,说是把编码改成GBK什么的,终究还是不成功。

最后经过多次测试,现把解决方案分享给大家。

第一步:打开mysql中的配置文件,my.ini,看一看配置文件中

[mysql]

default-character-set=utf8

[mysqld]

character-set-server=utf8

看是不是这样配置的。因为utf8 是国际通用的,网上说改成gbk什么的,是不对的,因为很多国外浏览器,都支持utf8,但是换成gbk即使插入数据库,中文不是乱码,

是正常的,当你用某些主流浏览器时,读出来显示的也是乱码。所以建议配置还是用utf8.

这两个配置也是mysql默认的配置,不用改他。那么真正能影响乱码的是,cmd链接mysql的时候。

举个例子:

mysql>uroot p123456

回车

或者网上很多说是这样子:

mysql>uroot p123456 --default-character-set=GBK

回车

以上两种链接方式,都会造成乱码。

重要:下面才是正确的链接方法:

mysql>uroot p123456 --default-character-set=utf8

mysql 保持链接,客户端,服务端,三个地方编码一致,才能不出现乱码。

今天的分享就到这里,至于正确性,我测试了,是正确的。

如果有朋友测试,我的做法还是错我的,请留言告诉我,我清理该帖子,免得误导大家。哈哈

每天早上敲醒自己的不是闹钟,是夢想!

系列目录

一、安装MySql

二、安装并破解Navicat

三、没有my.in配置文件怎么办

四、设置MySql的大小写敏感

五、重置MySql登陆密码


 

之前说过,Windows操作系统中,我们安装Mysql有两个选择:一是下载MSI点击运行,利用windows系统安装程序的方法按部就班的来安装;二是下载ZIP,解压出来就能立即使用。

在使用ZIP安装时,安装好之后默认是没有my.ini配置文件的:

当我们想修改数据库的配置信息如 wait_timeout、interactive_timeout、max_connections 或大小写敏感时,却找不到my.ini 配置文件。

虽然这时,还可以通过命令行来修改配置信息,但重启mysql后修改会失效,配置会回归默认值,所以这种方式治标不治本。

这里提供了另一种方法,解决的基本思路是:先删除Mysql服务,然后自己新建一个my.ini文件,最后使用命令行重新初始化mysql服务,同时指定新建的my.ini作为服务默认的配置文件。

以下是详细步骤:

  1. 删除MySql服务#

打开cmd(记得”使用管理员身份“打开),如果没有配置环境变量,请cd(切换目录)到mysql程序下的bin文件夹下(详细步骤参见第一章~):

运行命令:

D:\MySql\bin>sc delete MySql

"MySql"为服务名称,你的MysSql服务不一定是这个名称,可以打开电脑的服务窗口查看。

删除完成之后,最好去电脑的服务窗口看下,如果找不到MySql服务,说明已经已经删除成功。

如果还能看到MySql服务,可以手动右击选择”停止“,服务停止之后就会自动消失了。

  2. 新建my.ini配置文件#

在mysql程序的根目录下,新建一个my.ini空白文件,用记事本打开,将以下内容复制进去,保存:

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_bin
init_connect='SET NAMES utf8mb4'
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = D:\MySQL
datadir = D:\MySQL\data
port = 3306
# server_id = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 16M
read_rnd_buffer_size = 16M 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
View Code

其中basedir 和 datadir 根据实际MySql安装的位置进行修改。

  3. 重新生成data文件#

删除之前生成的data文件,如果有重要的数据表,请先备份好。

回到cmd,重新生成data文件。运行:

D:\MySql\bin>mysqld --initialize-insecure --user=mysql

该命令需要执行大概一分钟左右,完成后会在MySql程序文件夹下重新生成名称为data的文件夹:

 

 4. 重新安装mysql服务,同时绑定my.ini配置文件#

安装MySql服务,同时设置绑定my.ini配置文件。命令:

D:\MySql\bin>mysqld --install "MySql80" --defaults-file="d:/mysql/my.ini"

“MySql80”是服务名称,80表示8.0版本,当然,也可以自己取别的名字。

”..\my.ini“是新建的配置文件的位置,也可以写成绝对路径”D:\MySql\my.ini“。

如果提示安装成功,这时打开电脑的”服务“窗口,可以找到新添加的MySql80服务:

 

 5. 启动服务#

这里有两种启动服务的方式:1)服务窗口启动;2)cmd启动

 5.1 服务窗口启动#

直接右击服务项,选择启动:

 

 5.2 cmd命令启动#

命令:

D:\MySql\bin>net start mysql80

等待20秒左右,如果启动成功,是这样的:

 

如果不成功:

 

这时可能是my.ini配置文件中的某些配置有问题。你可以修改ini文件内容,然后从头按步骤再试一遍。

 6. 重新设置密码#

删除了data文件和服务之后,之前的密码就失效了,所以需要重新设置密码。

 6.1 登陆mysql#

命令:

D:\MySql\bin>mysql -u root -p

这时密码为空,不需要填写,直接回车:

如果这里没有登陆成功,请移步下一章”重置MySql密码“~

 6.2 修改root用户密码#

(敲黑板)这里有个需要注意的地方,在8.0之后的版本,修改root用户密码的命令是:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

 之前的版本是:

update mysql.user set authentication_string=password("你的密码") where user="root";

 我这里安装的是8.0.11,所以是第一个:

 6.3 退出MySQL#

命令:

mysql> exit

  6.4 使用修改后的密码重新登陆#

这里的命令和之前是一样的,就不写了,密码记得要填刚才设置的:

 

 

现在已经成功绑定了my.ini配置文件了,如果需要自定义配置,可以打开文件进行相应的配置设置,修改后重启服务即可。

如果修改后,重启服务报错,如下图:

 

有一种可能:你修改的配置与服务初始化时的配置有冲突,这时只能从头开始,在初始化的时候绑定my.ini文件 。

下一章要讲的的“设置MySql大小写敏感”就是~

你可能感兴趣的:(数据库)