MySQL高级1—Linux版的安装与配置

这篇博客详细介绍了在Linux系统中安装和配置MySQL的过程,包括下载与解压缩、检查系统状态、安装与依赖处理、设置开机自启动、解决字符集问题以及调整SQL Mode。此外,还涉及到MySQL的目录位置、首次登录密码设置、数据库字符集更改以及SQL Mode的严格模式设定,旨在帮助读者在Linux环境中顺利完成MySQL的高级安装和优化。

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。 MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

Mysql是开源的,所以你不需要支付额外的费用,而且可以定制,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。

MySQL使用标准的SQL数据语言形式;支持大型的数据库,可以处理拥有上千万条记录的大型数据库;可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。

1.Linux版的Mysql安装

1.下载地址

官网下载地址:http://dev.mysql.com/downloads/mysql/

在这里插入图片描述
在这里插入图片描述

2.拷贝&解压缩

3.检查工作

1)检查当前系统是否安装过mysql
执行安装命令前,先执行查询命令

a)CentOS6

rpm -qa|grep mysql

如果存在mysql-libs的旧版本包如下:
在这里插入图片描述
请先执行卸载命令:

rpm -e --nodeps mysql-libs

b)CentOS7

rpm -qa|grep mariadb

如果存在如下:

在这里插入图片描述

请先执行卸载命令:

rpm -e --nodeps mariadb-libs

2)检查/tmp文件夹权限

由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以请给/tmp较大的权限,执行 :

chmod -R 777 /tmp

4.安装

在mysql的安装文件目录下执行:

rpm -ivh MySQL-client-5.5.54-1.linux2.6.x86_64.rpm

rpm -ivh MySQL-server-5.5.54-1.linux2.6.x86_64.rpm

如果缺少安装所需的相关依赖,可以先使用 yum install 先行安装。

5.查看MySQL安装版本

可以执行 mysqladmin --version命令,类似java -version如果打出消息,即为成功。
在这里插入图片描述

6.mysql服务的启+停

1)启动:

service mysql start

2)关闭:

service mysql stop

7.首次登录及密码设置

安装完成后会提示出如下的提示:

  • 在mysql首次登录前要给 root 账号设置密码
    在这里插入图片描述

1)设置登录密码:启动服务后,执行命令

/usr/bin/mysqladmin -u root password ‘123123’

在这里插入图片描述

2)登录:

mysql -uroot -p123123

在这里插入图片描述

2.MySQL设置

2.1 MySQL的安装位置

在linux下查看安装目录

ps -ef|grep mysql

在这里插入图片描述

参数路径解释备注
–basedir/usr/bin相关命令目录mysqladmin mysqldump等命令
–datadir/var/lib/mysql/mysql数据库文件的存放路径
–plugin-dir/usr/lib64/mysql/pluginmysql插件存放路径
–log-error/var/lib/mysql/jack.atguigu.errmysql错误日志路径
–pid-file/var/lib/mysql/jack.atguigu.pid进程pid文件
–socket/var/lib/mysql/mysql.sock本地连接时用的unix套接字文件
-/usr/share/mysql配置文件目录mysql脚本及配置文件
-/etc/init.d/mysql服务启停相关脚本

2.2 设置开机自启动

chkconfig mysql on

chkconfig mysql --list

在这里插入图片描述

2.3 修改字符集问题

1.mysql可能会出现的乱码问题:

  • 在mysql中尝试创建新表,并插入中文字符:

在这里插入图片描述

2.出现乱码的原因

  • mysql的字符集存在问题
  • 因为,默认的mysql服务器使用了latin1编码格式,所以会乱码

1)查看mysql的字符集设置

show variables like ‘character%’;

show variables like ‘%char%’;

看看出现的结果:

在这里插入图片描述

3.如何修改?

1)修改my-huge.cnf配置文件:

  • 1)在mysql配置文件目录——/usr/share/mysql/ 中找到my-huge.cnf的配置文件
  • 2)拷贝其中的my-huge.cnf 到 /etc/ 目录下并命名为my.cnf
  • 3)然后修改my.cnf:在对应位置,添加如下内容
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci
[mysql]
default-character-set=utf8

在这里插入图片描述

在这里插入图片描述
2)重新启动mysql

service mysql restart

3)查看原库的字符集:

show create database mydb

4.注意:

原库的字符集设定不会发生变化,参数修改只对新建的数据库生效

那已生成的库表字符集如何变更?

1)修改数据库的字符集

mysql> alter database mydb character set ‘utf8’;

2)修改数据表的字符集

mysql> alter table mytbl convert to character set ‘utf8’;

但是原有的数据如果是用非’utf8’编码的话,数据本身不会发生改变。

2.4 sql_mode设置

1.什么是sql_mode?

MySQL的sql_mode合理设置:

  • sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题。

2.如何查看当前的sql_mode

show variables like ‘sql_mode’;

在这里插入图片描述
3.如何设置该值?

sql_mode常用值如下:

set sql_mode=‘ONLY_FULL_GROUP_BY’;

在这里插入图片描述

4.sql_mode又有那些值?

1)ONLY_FULL_GROUP_BY:

  • 对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中

2)NO_AUTO_VALUE_ON_ZERO:

  • 该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。

3)STRICT_TRANS_TABLES:

  • 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制

4)NO_ZERO_IN_DATE:

  • 在严格模式下,不允许日期和月份为零

5)NO_ZERO_DATE:

  • 设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

6)ERROR_FOR_DIVISION_BY_ZERO:

  • 在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如 果未给出该模式,那么数据被零除时MySQL返回NULL

7)NO_AUTO_CREATE_USER:

  • 禁止GRANT创建密码为空的用户

8)NO_ENGINE_SUBSTITUTION:

  • 如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

9)PIPES_AS_CONCAT:

  • 将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似

10)ANSI_QUOTES:

  • 启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

11)ORACLE:

  • 设置等同:PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER.

5.案例:

# 创建表并插入一些值
CREATE TABLE mytbl2 (id INT,NAME VARCHAR(200),age INT,dept INT);
INSERT INTO mytbl2 VALUES(1,'zhang3',33,101);
INSERT INTO mytbl2 VALUES(2,'li4',34,101);
INSERT INTO mytbl2 VALUES(3,'wang5',34,102);
INSERT INTO mytbl2 VALUES(4,'zhao6',34,102);
INSERT INTO mytbl2 VALUES(5,'tian7',36,102);

# 查询每个部门年龄最大的人
SELECT NAME,dept,MAX(age) FROM mytbl2 GROUP BY dept;

上面语句是错的:

  • group by使用原则:select 后面只能放 函数 和group by后的字段
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值