MYSQL学习笔记-00

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/tyn243222791/article/details/84728276

首先安装mysql,安装的服务器访问不了网络,所以采用离线模式安装。安装环境如下:
查看Linux信息
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

mysql安装

安装环境centos7
安装mysql 5.7.23 x64
mysql官网下载mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar,解压并按如下顺序执行

rpm -ivh mysql-community-common-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-devel-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-5.7.23-1.el7.x86_64.rpm

如果有冲突(发生在第二步),可能是服务器中存在mariadb,
rpm -qa|grep mariadb
存在则删除
rpm -e --nodeps mariadb-libs

到此基本安装完毕,修改配置文件
vim /etc/my.cnf

扫描二维码关注公众号,回复: 6081444 查看本文章

skip-grant-tables #添加这句话,这时候登入mysql就不需要密码

启动mysql服务
systemctrl start mysqld.service
免密码登陆
mysql -u root -p

set password for root@localhost = password(‘123456’);
一般会报错,然后再来一遍
mysql> flush privileges; #更新权限
set password for root@localhost = password(‘123456’);
成功后退出,将配置文件中免密登陆的地方删除掉。

修改存储文件路径
在/etc/my.cnf文件中修改了datadir

一个SQL在公司可以执行,放到现场执行不了,报错信息大概如下(网上找的,自己的没保存):ERROR 1055 (42000): Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘imooc.s.type_name’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
网上查找资料,表示mysql 5.7在某个版本之后默认在sql_mode中增加了only_full_group选项,表示group by的语句在查询结果必须包含在group by中(这里需要对sql_mode了解下,后面补充@@)。

使用SELECT @@SESSION.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;
的确包含ONLY_FULL_GROUP_BY,同样查找公司数据库,没有改属性。那么现在的问题就是删除这条属性,命令行执行语句(这里换行是为了看起来方便):
set sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,
NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
之后执行SQL的确没问题,但是新建查询后查询又失败了,网上说这样的设置只能修改本次session的,新建窗口查询sql_mode的确没有删除ONLY属性。
尝试第二个方法,配置文件中修改,找到服务器上的配置文件(/etc/my.cnf),增加语句:
set sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
关闭mysql,开启mysql报错(距离工作人员办公还有不到二十分钟。。。),查看mysql日志(配置文件中有地址),发现是配置文件错误,修改配置文件,将语句:
set sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
修改为(多个set):
sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
启动mysql成功,执行有问题的sql成功(距离工作人员上班还有不到十分钟);
现场mysql 5.7.22,公司5.7.12

以上是安装mysql的步骤,以及当时遇到的问题,后面会陆续记录自己的学习笔记

猜你喜欢

转载自blog.csdn.net/tyn243222791/article/details/84728276
今日推荐