如果编写一个小工具、小,可以直接写代码,它不涉及存储数据的操作,不过如果要编写一个网络工具、系统平台、网络游戏就需要将大量的数据存储起来。
早期存储数据都是使用文件存储,不过使用文件作为存储媒介是非常有局限性了。首先文件是独立的,很难进行统计操作;其次文件依赖IO句柄,频繁的进行打开文件、关闭文件,会对系统资源造成影响。
这时候(Database)就应运而生了,它可以最大限度的解决存储和读取的问题,依赖公共的SQL语法标准,可以快速、灵活的对数据库引擎进行数据存储和数据读取。
MySQL是一款开源的、免费的、功能强大的数据库引擎,今天就跟着福哥来学习如何在我们的TFLinux操作系统上面安装MySQL数据库引擎吧。
安装环境
CentOS:CentOS Linux release 7.6.1810 (Core)Linux:Linux version 3.10.0-1062.el7.x86_64
GCC:gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
软件版本
-5.7.28-linux-glibc2.12-x86_64.tar.gz
本地化
如果是新环境,我们需要设置时区以保证时间显示正确
安装wget
如果环境里没有wget,通过yum安装一下
安装依赖包
建立环境根目录
建立安装包目录并进入
准备
mysql-5.7.28-linux-glibc2.12-x86_64.tar.g
下载安装包
下载mysql-5.7.28安装包
创建账号
需要创建一个用户mysql
安装mysql
我们下载的是编译好的二进制版本,直接解压缩即可使用
初始化
使用mysqld进行初始化
注意:执行完上面的命令后,会有初始化密码打印出来,一定记得保存起来
默认my.cnf
删除默认的my.cnf文件
启动
修改启动脚本
启动服务
修改默认密码
使用前面在初始化的时候系统返回的信息里的最后一行的初始化密码来修改root密码
登录
使用新密码登录
自动启动
添加自动启动脚本
使用 systemctl 管理 mysqld 服务
服务命令添加到系统目录
常见错误1
在新版本的 mysql 里是找不到 my.cnf 配置文件的,因为 mysql 把大部分参数都设置了默认值,原则上我们不需要设置太多参数
如果想要设置的话,可以从旧版本的 mysql 环境下复制过来,放到mysql的安装目录下。当然,你也可以像以前那样放到 /etc/my.cnf,不过,这样不利用管理和迁移
常见错误2
在新版本的 mysql 里使用 group by 语句的时候有了限制,简单说就是 group by 的字段必须在select 内出现,这样的话 select * from xxx group by yyy 就行不通了。
which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
解决方法,在 my.cnf 里增加一行设置即可
sql_mode=“STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
这样就可以随便写了~
常见错误3
新版本的 mysql 在做同步复制的时候,发现 server_id 改了没有变化,始终是 4294967295,怎么回事?经过各自尝试发现,原理新版本的 mysql 对于 server_id 的位数做了限制,数字不能超过10位,否则就会溢出了
TNND,能不能向后兼容啊~~
常见错误4
如果在导入 sql 的时候发现写入速度非常慢,可以从以下几个方面检查
检查 max_allowed_packet 是否设置太小了,这个会影响大 sql 的写入速度,一般情况下 dump 出来的 sql 都是多行用一个 insert 语句执行写入的检查是不是使用的 innodb 引擎的数据表,innodb 数据表写和读都要比 myisam 慢一些检查有没有关闭 log-bin,这玩意没关闭的话导入速度会慢几百倍,上千倍,强烈建议导入数据时候关闭它!!检查 innodb_flush_log_at_trx_commit 有没有设置为 0,这玩意设置了非 0 的值的话导入速度也会慢几十倍,强烈建议导入数据时候关闭它!!
常见错误5
在通过 mysql 连接数据库时候提示找不到 socket 文件的话ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)解决方法,在 my.cnf 里设置一下
连接数据库服务器
使用下面的命令连接到MySQL数据库服务器
创建数据库
一个数据库服务器可以有若干个数据库,每个数据库作为一个项目的数据存储介质使用
使用下面的命令可以创建一个数据库,福哥创建的是test数据库
查看数据库列表
使用下面的命令查看服务器的数据库列表,列表包括很多系统数据库,其中还有我们刚刚创建的test库
选择数据库
我们要选择一个数据库作为我们正在操作的库
创建数据表
一个数据库可以有若干多个数据表,每个数据表代表着一组同类型的数据,例如:用户,留言等等
使用下面的命令可以创建一个数据表,福哥创建的是test数据表,包括两个字段id和name
插入新数据
现在我们要像这个数据表test里插入数据了,数据表test有两个字段,分别是int类型和varchar类型,我们可以根据这两个字段的类型向里面写入值
插入语句如下
查看数据表数据
现在数据表test里面已经有了一条数据了,我们可以通过SQL语句对这个数据表进行查询,得到数据表里面的数据
查询语言句如下
修改数据表数据
我们可以通过数据表的id精确地对这一行的数据进行修改操作,因为id这一列的数据是唯一的,可以帮助我们精确定位某一具体数据行
更新语句如下
删除数据表数据
如果需要删除掉数据表当中的数据,可以通过数据表的id精确定位某一行数据,将之删除掉
删除语句如下
查看数据表数据
再次查看数据表数据,可以看到数据表里已经空空如也了
退出数据库服务器
操作完了之后,就可以退出数据库服务器连接了
学会了MySQL的使用技巧,今后我们就可以做一些非常有意思的东西了!目前福哥教大家的语言c/c++、java、php和python都是可以连接MySQL数据库的,结合MySQL数据库我们可以做一些中大型的项目,包括且不限于一个博客,一个论坛,一个留言板,一个换装游戏,一个情景游戏等等。
接下来福哥会一个一个地介绍使用c/c++、java、php、python操作MySQL的方法,童鞋们一定要跟上哦~~