Mysql中的collation (stage1-9)

本文详细介绍了MySQL中的字符排序(collation)概念及其应用场景。字符排序决定了如何比较字符数据,包括大小写敏感性和特殊字符处理等。文章通过示例对比了不同字符排序设置下SQL查询结果的差异。

mysql的collation大致的意思就是字符排序。
首先字符本来是不分大小的,那么对字符的>, = , < 操作就需要有个字符序的规则。collation做的就是这个事情,你可以对表进行字符序的设置,也可以单独对某个字段进行字符序的设置。一个字符类型,它的字符序有多个,比如:

下面是UTF8对应的字符序。

utf8_general_ci utf8    33  Yes Yes 1
utf8_bin    utf8    83      Yes 1
utf8_unicode_ci utf8    192     Yes 8
utf8_icelandic_ci   utf8    193     Yes 8
utf8_latvian_ci utf8    194     Yes 8
utf8_romanian_ci    utf8    195     Yes 8
utf8_slovenian_ci   utf8    196     Yes 8
utf8_polish_ci  utf8    197     Yes 8
utf8_estonian_ci    utf8    198     Yes 8
utf8_spanish_ci utf8    199     Yes 8
utf8_swedish_ci utf8    200     Yes 8
utf8_turkish_ci utf8    201     Yes 8
utf8_czech_ci   utf8    202     Yes 8
utf8_danish_ci  utf8    203     Yes 8
utf8_lithuanian_ci  utf8    204     Yes 8
utf8_slovak_ci  utf8    205     Yes 8
utf8_spanish2_ci    utf8    206     Yes 8
utf8_roman_ci   utf8    207     Yes 8
utf8_persian_ci utf8    208     Yes 8
utf8_esperanto_ci   utf8    209     Yes 8
utf8_hungarian_ci   utf8    210     Yes 8
utf8_sinhala_ci utf8    211     Yes 8
utf8_german2_ci utf8    212     Yes 8
utf8_croatian_ci    utf8    213     Yes 8
utf8_unicode_520_ci utf8    214     Yes 8
utf8_vietnamese_ci  utf8    215     Yes 8
utf8_general_mysql500_ci    utf8    223     Yes 1

mysql的字符序遵从命名惯例
以_ci(表示大小写不敏感)
以_cs(表示大小写敏感)
以_bin(表示用编码值进行比较)

比如:

CREATE TABLE `issue_message` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

这个表下面的两个sql会出现同样的结果

select * from issue_message where content = 'Yes'
select * from issue_message where content = 'yes'

如果改成下面的定义:

CREATE TABLE `issue_message` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` varchar(255) NOT NULL COLLATE utf8_bin,
  PRIMARY KEY (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

那么两个sql结果就会不一样了。

所以,如果对字符大小写敏感的话,最好将数据库中默认的utf8_general_ci设置为utf8_bin。

<think>好的,用户现在有一堆MySQL 5.7的RPM包,想知道安装完这些文件后下一步该怎么做。首先,我需要确认这些RPM包都是什么,然后安装顺序是否正确。记得在安装MySQL的RPM包时,通常有依赖关系,必须先安装common、libs这些基础包,再安装client、server等。 用户用的是CentOS 7或者RHEL 7,因为包名里有el7。可能需要检查是否已经安装了MariaDB,因为CentOS默认可能带有,这会导致冲突。所以可能需要先卸载MariaDB相关的包。 安装顺序的话,通常按照common -> libs -> libs-compat -> client -> server这样的顺序来。用户列出的包很多,可能包括devel、embedded这些,但用户可能只需要核心组件。如果用户只是安装MySQL服务器,可能不需要devel或者test这些包,但既然用户已经下载了,可能需要全部安装。 安装完成后,启动服务,然后运行安全脚本,设置root密码,移除匿名用户等。最后可能需要配置开机启动。另外,可能需要打开防火墙端口3306,如果用户有防火墙的话。 还要考虑SELinux的状态,有时候需要调整策略,但大部分情况下默认配置应该可以工作。需要提醒用户修改密码,可能还有远程访问的配置,如果需要的话。 用户可能不太清楚这些步骤,所以需要详细说明每一步的命令,比如用yum localinstall安装,systemctl启动服务,mysql_secure_installation等。同时要确保命令正确,避免权限问题,比如是否用sudo执行。 另外,可能需要检查安装过程中是否有依赖缺失,如果用户使用rpm或者yum安装的话,yum会自动解决依赖,但如果是手动安装可能需要处理依赖问题。不过用户提供的包列表比较全,可能已经包含所需依赖,但需要确认顺序正确。 最后,测试连接,确保MySQL服务正常运行,能够登录。如果有错误日志,可能需要查看/var/log/mysqld.log来排查问题。</think>以下是安装这些MySQL 5.7 RPM包后的操作步骤: --- ### 一、安装前检查 1. **卸载MariaDB** (CentOS 7默认自带) ```bash sudo yum remove mariadb-libs ``` 2. **安装依赖** ```bash sudo yum install libaio perl net-tools ``` --- ### 二、按顺序安装RPM包 ```bash # 按依赖顺序依次安装(建议使用yum自动处理依赖) sudo yum localinstall mysql-community-common-5.7.37-1.el7.x86_64.rpm \ mysql-community-libs-5.7.37-1.el7.x86_64.rpm \ mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm \ mysql-community-client-5.7.37-1.el7.x86_64.rpm \ mysql-community-server-5.7.37-1.el7.x86_64.rpm \ mysql-community-devel-5.7.37-1.el7.x86_64.rpm \ mysql-community-embedded-5.7.37-1.el7.x86_64.rpm \ mysql-community-embedded-compat-5.7.37-1.el7.x86_64.rpm \ mysql-community-embedded-devel-5.7.37-1.el7.x86_64.rpm \ mysql-community-test-5.7.37-1.el7.x86_64.rpm ``` --- ### 三、初始化配置 1. **启动MySQL服务** ```bash sudo systemctl start mysqld sudo systemctl enable mysqld ``` 2. **获取临时密码** ```bash sudo grep &#39;temporary password&#39; /var/log/mysqld.log ``` 3. **运行安全脚本** ```bash sudo mysql_secure_installation ``` - 输入临时密码 - 设置新密码(需包含大小写字母、数字、特殊字符) - 移除匿名用户、禁止远程root登录等 --- ### 四、验证安装 1. **登录MySQL** ```bash mysql -u root -p ``` 2. **查看版本号** ```sql SELECT VERSION(); ``` --- ### 五、可选配置 1. **防火墙开放3306端口** ```bash sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload ``` 2. **修改字符集(可选)** 编辑 `/etc/my.cnf`,在 `[mysqld]` 下添加: ```ini character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci ``` --- ### 六、故障排查 - **错误日志路径**:`/var/log/mysqld.log` - **重置权限**:`mysql_upgrade -u root -p` --- 通过以上步骤即可完成MySQL 5.7的安装和基础配置。建议优先使用 `yum localinstall` 命令自动处理依赖关系,避免手动安装顺序错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值