实验环境centos7以上版本(不会的看我以前的教程)
mysql5.7 (我带你快速装一次用yum装)
首先安装mysql
注:mysql-5.7.tar.gz 中包括了安装 mysql5.7 主要的软件包。 这样部署起来更方便
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
去这里下载tar包
然后上次到root的家目录下面
[root@huaxinfeng63 ~]# tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
[root@huaxinfeng63 ~]# yum -y install ./mysql*.rpm
[root@huaxinfeng63 ~]# systemctl start mysqld #启动 MySQL 会生成临时密码。
在 MySQL 的配置文件/etc/my.cnf 中关闭密码强度审计插件,并重启 MySQl 服务
[root@huaxinfeng63 ~]# vim /etc/my.cnf #修改 MySQL 的配置文件,在[myqld]标签处末行 添加以下项:
validate-password=OFF #不使用密码强度审计插件,记住一定是最后一行哦。
[root@huaxinfeng63 ~]# systemctl restart mysqld #重启 MySQL 服务
[root@huaxinfeng63 ~]# grep ‘temporary password’ /var/log/mysqld.log #获取临时密码
A temporary password is generated for root@localhost: buL.UJp4dSOd #临时密码
[root@huaxinfeng63 ~]# mysql -u root -p’buL.UJp4dSOd’ #使用临时密码登录 MySQl,注意临时密码要引号
登陆进来之后设置密码为123
mysql> set password for root@localhost = password('123'); #修改 root 用户密码为 123
字符集就是一套文字符号及其编码、比较规则的集合,第一个计算机字符集 ASCII!MySQL 数据库字 符集包括字符集(CHARACTER)和校对规则(COLLATION)两个概念,其中字符集用来定义 MySQL 数据字符串的存储方式,而校对规则定义比较字符串的方式
1.如果处理各种各样的文字,发布到不同语言国家地区,应选 Unicode 字符集,对 MySQL 来说就是 UTF-8(每个汉字三个字节)
2.如果只是需要支持中文,并且数据量很大,性能要求也高,可选 GBK(定长,每个汉字占双 字节,英文也占双字节),如果是大量运算,比较排序等,定长字符集更快,性能也高
3.处理移动互联网业务,可能需要使用 utf8mb4 字符集,apple
MySQL 可以支持多种字符集,同一台服务器,库或表的不同字段都可以指定不同的字符集
[root@huaxinfeng63 ~]# mysql -u root -p123 -e "show character set \G;"
这就是mysql支持的字符集 注:/G是以横向格式输出
查看常用的字符集:
[root@huaxinfeng63 ~]# mysql -uroot -p123 -e "show character set \G;" | egrep "gbk|utf8|awk'{print $0}'"
查看 MySQL 当前的字符集设置情况
[root@huaxinfeng63 ~]# mysql -uroot -p123
mysql> show variables like ‘character_set%’;
修改 MySQL 的字符集
[root@huaxinfeng63 ~]# vim /etc/my.cnf #修改 MySQL 配置文件,在[mysqld]处的未 行添加如下:
[root@huaxinfeng63 ~]# character-set-server=utf8
[root@huaxinfeng63 ~]# systemctl restart mysqld
[root@huaxinfeng63 ~]# mysql -u root -p123
mysql> show variables like 'character_set%';
在不使用任何工具的情况下,修改字符集,保证数据完整性,但是要停服务器中途不能进行增删改操作
将字符集为 latin1 已有记录的数据转成 utf8,并且已经存在的记录不乱码
首先你要把表结构导出,导出book的表结构到booktabke.sql中
[root@huaxinfeng63 ~]# mysqldump -u root -p123 --default-character-set=latin1 -d book> booktable.sql
编辑 booktable.sql 将 latin1 修改成 utf8
[root@huaxinfeng63 ~]# vim booktable.sql #修改所有 latin1 为 utf8
在 vim 未行模式下 :%s/latin1/utf8/g 全文查找 latin1 并替换为 utf8。
确保数据库不再更新,导出所有数据
[root@huaxinfeng63 ~]# mysqldump -u root -p153456 --quick --no-create-info – extended-insert --default-character-set=latin1 book > bookdata.sql
参数说明:
–quick:用于转储大的表,强制 mysqldump 从服务器一次一行的检索数据而不是检索所有行,并 输出当前 cache 到内存中。
–no-create-info:不要创建 create table 语句。
–extended-insert:使用包括几个 values 列表的多行 insert 语法,这样文件更小,IO 也小,导 入数据时会非常快
–default-character-set=latin1:按照原有字符集导出数据,这样导出的文件中,所有中文都是可 见的,不会保存成乱码。
打开 bookdata.sql 将 SET NAME latin1 修改成 SET NAME utf8
[root@huaxinfeng63 ~]# vim bookdata.sql
改:10 /*!40101 SET NAMES latin1 /;
为:10 /!40101 SET NAMES utf8 */;
重新建库
[root@huaxinfeng63 ~]# mysql -u root -p123
mysql> drop database book;
mysql> create database book default charset utf8;
mysql> exit
[root@huaxinfeng63 ~]# mysql -u root -p123 book
[root@huaxinfeng63 ~]# mysql -u root -p123 book
注意:选择目标字符集时,要注意最好大于等于原字符集(字库更大),否则可能会丢失不被支持 的数据。
如果对你有帮助给我点个赞吧谢谢了。