一、解决mysql中文乱码以及特殊字符问题。
1.1 解决mysql中文乱码需要修改mysql的编码方式为utf8(最大3字节),如果除了显示中文还需要显示特殊字符,那么选择编码方式为utf8mb4.
下面以utf8mb4为例,(utf8的修改方式类似)
具体步骤:1. 修改数据库的默认编码方式为utf8mb4。
For Ubuntu:编辑/etc/mysql/my.cnf,在【mysqld】标签下加入如下几句话:
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-character-set-client-handshake
For windows:在mysql的主目录my-defualt.ini中加入上面代码。
2. 重启mysql服务。
For Ubuntu:sudo /etc/init.d/mysql restart
For windows: ps -A | grep mysql 查看mysql服务名称,一般名为mysql。
输入命令:net stop mysql
net start mysql
3. 查看数据库编码。
进入数据库:mysql -uroot -p
查看数据库编码:show variables like "%char%",正常应该显示多个utf8mb4,非正常情况,
输入:set names utf8mb4
也可以输入:
set character_set_client = utf8mb4;
set character_set_server = utf8mb4;
set character_set_connection = utf8mb4;
set character_set_database = utf8mb4;
set character_set_results = utf8mb4;
set collation_connection = utf8mb4_general_ci;
set collation_database = utf8mb4_general_ci;
set collation_server = utf8mb4_general_ci;
4.创建数据库时设置编码,创建表时也设置编码
创建数据库:create database mydatabase CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';
进入数据库:use mydatabase
创建数据库表:create table persons( id varchar(40) not null)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
修改数据库编码:ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
修改数据表编码:ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
查看数据库编码:show create database db_name
查看数据表编码:show create table tb_name
修改字段编码:ALTER TABLE `persons` CHANGE `id` `id` VARCHAR( 40 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,CHANGE `name` `name` VARCHAR( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
这样编码问题都能解决了。
二、mysql数据库远程连接
主要是修改服务端(以下命令执行在Ubuntu14.04下)
1. 编辑/etc/hosts.allow 文件,加入以下代码:
mysqld: ALL : ALLOW
mysqld-max: ALL : ALLOW
2. 进入mysql数据库
输入以下命令:
1. 改变数据库:use mysql;
2. 授权:grant all privileges on *.* to root@'%' identified by "远程连接密码";(远程连接用户名为root)
3.查看授权结果:select host,user,password from user;
+--------------+------+-------------------------------------------+
| host | user | password |
+--------------+------+-------------------------------------------+
| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| % | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
+--------------+------+-------------------------------------------+
3.修改/etc/mysql/my.cnf文件
在【mysqld】标签下加入:skip-name-resolve
4.重启电脑。
另外:当你使用命令mysql -uroot -p连接数据库出现 什么/var/run/.../...sock 错误或启动mysql服务失败时,请使用mysql -h 127.0.0.1 -P 3306 -u root -p命令进行连接,或者重启电脑。