安装环境
- 操作系统:ReadHat 6 x86_64
- 数据库:Mysql 5.7
准备工作
检查是否安装已有Mysql 或 其依赖包,如有则需要卸载
rpm -qa | grep mysql
rpm -e 包名 --nodeps
安装
安装包列表
- mysql-community-common-5.7.17-1.el6.x86_64.rpm
- mysql-community-- libs-5.7.17-1.el6.x86_64.rpm
- mysql-community-client-5.7.17-1.el6.x86_64.rpm
- mysql-community-devel-5.7.17-1.el6.x86_64.rpm (可选)
- mysql-community-server-5.7.17-1.el6.x86_64.rpm
安装命令
rpm -ivh mysql-community-common-5.7.17-1.el6.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.17-1.el6.x86_64.rpm
rpm -ivh mysql-community-client-5.7.17-1.el6.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.17-1.el6.x86_64.rpm
rpm -ivh mysql-community-server-5.7.17-1.el6.x86_64.rpm
安装过程如图
初始化
在 *nix 系统中,为了保证数据库目录为与文件的所有者为 mysql 登陆用户,如果你是以 root 身份运行 mysql 服务,需要执行下面的命令初始化
mysqld --initialize --user=mysql
如果是以 mysql 身份运行,则可以去掉 --user 选项。
--initialize
初始化的,会生成一个 root 账户密码,密码在log文件里
/var/log/mysqld.log
文件的最后一行就是root 密码,该密码被标记为过期,故首次登录后需要修改root的密码才能使用MySQL
基础配置
Mysql默认的端口是3306
修改MySQL端口及默认存储引擎
在 /etc/my.cnf
的[mysqld]下面添加或修改
port=6033
default-storage-engine=INNODB
启动停止MySQL
service mysqld status 检测mysql服务状态
service mysqld start
service mysqld stop
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Eoy!E!%X';
创建用户
默认root用户是不能远程登录的,也不提供远程功能。故需要创建一个用户来用于远程登录
create user trustmo identified by 'f76Ta,2G';
备注:
第一个:用户名
第二个:用户名密码
创建数据库及权限分配
- 创建数据库并指定字符集
create database updb default charset utf8 collate utf8_bin;
- 分配权限
grant all on updb.* to trustmo@"%" identified by 'f76Ta,2G' with grant option;
- 刷新缓存使生效
flush privileges;
遇到的问题及解决
表名查询不区分大小写
在 /etc/my.cnf
的[mysqld]下面添加或修改
lower_case_table_names=1
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的;
MySQL在Windows下都不区分大小写。
this is incompatible with sql_mode=only_full_group_by错误
- 查询当前使用的sqlmode
select @@sql_mode;
结果如下:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
在 /etc/my.cnf
的[mysqld]下面添加或修改
sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
上面的查询结构集去掉 ONLY_FULL_GROUP_BY 选项