虚拟机安装mysql数据库_安装mysql详细步骤

虚拟机安装mysql数据库_安装mysql详细步骤,第1张

虚拟机安装mysql数据库_安装mysql详细步骤 如果编写一个小工具、小游戏,可以直接写代码,它不涉及存储数据的 *** 作,不过如果要编写一个网络工具、系统平台、网络游戏就需要将大量的数据存储起来。


早期存储数据都是使用文件存储,不过使用文件作为存储媒介是非常有局限性了。


首先文件是独立的,很难进行统计 *** 作;其次文件依赖IO句柄,频繁的进行打开文件、关闭文件,会对系统资源造成影响。


这时候数据库(Database)就应运而生了,它可以最大限度的解决存储和读取的问题,依赖公共的SQL语法标准,可以快速、灵活的对数据库引擎进行数据存储和数据读取。


MySQL是一款开源的、免费的、功能强大的数据库引擎,今天就跟着福哥来学习如何在我们的TFLinux *** 作系统上面安装MySQL数据库引擎吧。


基本信息安装环境CentOS:CentOS Linux release 7.6.1810 (Core)Linux:Linux version 3.10.0-1062.el7.x86_64GCC:gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)软件版本mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz准备工作本地化如果是新环境,我们需要设置时区以保证时间显示正确timedatectl set-timezone Asia/Shanghai安装wget如果环境里没有wget,通过yum安装一下yum -y install wget安装依赖包yum -y install libaio numactl-libs建立环境根目录mkdir -p /tongfu.net/env/建立安装包目录并进入mkdir /packagescd /packages安装MySQL 5.7准备mysql-5.7.28-linux-glibc2.12-x86_64.tar.g下载安装包下载mysql-5.7.28安装包wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz创建账号需要创建一个用户mysqluseradd mysql安装mysql我们下载的是编译好的二进制版本,直接解压缩即可使用tar -xzvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /tongfu.net/env/cd /tongfu.net/env/mv mysql-5.7.28-linux-glibc2.12-x86_64/ mysql-5.7.28初始化使用mysqld进行初始化mkdir mysql-5.7.28/data/chown -R mysql.mysql mysql-5.7.28/./mysql-5.7.28/bin/mysqld --initialize --user=mysql --basedir=/tongfu.net/env/mysql-5.7.28/ --datadir=/tongfu.net/env/mysql-5.7.28/data/注意:执行完上面的命令后,会有初始化密码打印出来,一定记得保存起来2020-01-07T03:41:01.823712Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).2020-01-07T03:41:03.374189Z 0 [Warning] InnoDB: New log files created, LSN=457902020-01-07T03:41:03.775803Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.2020-01-07T03:41:03.952070Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 87b0b720-30ff-11ea-9268-02420a100170.2020-01-07T03:41:03.975895Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.2020-01-07T03:41:04.839331Z 0 [Warning] CA certificate ca.pem is self signed.2020-01-07T03:41:05.515747Z 1 [Note] A temporary password is generated for root@localhost: FwaKHorkK6;3配置默认my.cnf删除默认的my.cnf文件rm -f /etc/my.cnf启动启动修改启动脚本[root@dev env]# vi ./mysql-5.7.28/support-files/mysql.serverbasedir=/tongfu.net/env/mysql-5.7.28/datadir=/tongfu.net/env/mysql-5.7.28/data/启动服务./mysql-5.7.28/support-files/mysql.server start修改默认密码使用前面在初始化的时候系统返回的信息里的最后一行的初始化密码来修改root密码./mysql-5.7.28/bin/mysqladmin -uroot -p password "abcdef"登录使用新密码登录./mysql-5.7.28/bin/mysql -uroot -pabcdef自动启动添加自动启动脚本[root@dev env]# cat > /lib/systemd/system/mysqld.service <<EOF[Unit]Description=mysqldAfter=network.target[Service]Type=forkingExecStart=/tongfu.net/env/mysql-5.7.28/support-files/mysql.server startExecReload=/tongfu.net/env/mysql-5.7.28/support-files/mysql.server restartExecStop=/tongfu.net/env/mysql-5.7.28/support-files/mysql.server stopPrivateTmp=false[Install]WantedBy=multi-user.targetEOF使用 systemctl 管理 mysqld 服务systemctl enable mysqld # 设置自动启动systemctl start mysqld # 启动服务systemctl stop mysqld # 停止服务systemctl restart mysqld # 重启服务服务命令添加到系统目录ln -s /tongfu.net/env/mysql-5.7.28/bin/mysql /usr/bin/ln -s /tongfu.net/env/mysql-5.7.28/bin/mysqldump /usr/bin/常见错误常见错误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数据库服务器[root@dev env]# mysql -uroot -pabcdefmysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 3Server version: 5.7.28 MySQL Community Server (GPL)Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>创建数据库一个数据库服务器可以有若干个数据库,每个数据库作为一个项目的数据存储介质使用使用下面的命令可以创建一个数据库,福哥创建的是test数据库mysql> create database test default charset utf8;Query OK, 1 row affected (0.00 sec)查看数据库列表使用下面的命令查看服务器的数据库列表,列表包括很多系统数据库,其中还有我们刚刚创建的test库mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                || test               |+--------------------+5 rows in set (0.00 sec)选择数据库我们要选择一个数据库作为我们正在 *** 作的库mysql> use test;Database changed创建数据表一个数据库可以有若干多个数据表,每个数据表代表着一组同类型的数据,例如:用户,留言等等使用下面的命令可以创建一个数据表,福哥创建的是test数据表,包括两个字段id和namemysql> CREATE TABLE `test` (    -> `id` int NOT NULL AUTO_INCREMENT,     -> `name` varchar(45) NOT NULL,     -> PRIMARY KEY (`id`)    -> );Query OK, 0 rows affected (0.00 sec)插入新数据现在我们要像这个数据表test里插入数据了,数据表test有两个字段,分别是int类型和varchar类型,我们可以根据这两个字段的类型向里面写入值插入语句如下mysql> INSERT INTO test (name) VALUES ('福哥');Query OK, 1 row affected (0.10 sec)查看数据表数据现在数据表test里面已经有了一条数据了,我们可以通过SQL语句对这个数据表进行查询,得到数据表里面的数据查询语言句如下mysql> SELECT * FROM test;+----+--------+| id | name   |+----+--------+|  1 | 福哥   |+----+--------+1 row in set (0.00 sec)修改数据表数据我们可以通过数据表的id精确地对这一行的数据进行修改 *** 作,因为id这一列的数据是唯一的,可以帮助我们精确定位某一具体数据行更新语句如下mysql> UPDATE test SET name = '福哥加油' WHERE id = 1;Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0删除数据表数据如果需要删除掉数据表当中的数据,可以通过数据表的id精确定位某一行数据,将之删除掉删除语句如下mysql> DELETE FROM test WHERE id = 1;Query OK, 1 row affected (0.00 sec)查看数据表数据再次查看数据表数据,可以看到数据表里已经空空如也了mysql> SELECT * FROM test;Empty set (0.00 sec)退出数据库服务器 *** 作完了之后,就可以退出数据库服务器连接了mysql> exitBye总结学会了MySQL的使用技巧,今后我们就可以做一些非常有意思的东西了!目前福哥教大家的语言c/c++、java、php和python都是可以连接MySQL数据库的,结合MySQL数据库我们可以做一些中大型的项目,包括且不限于一个博客,一个论坛,一个留言板,一个换装游戏,一个情景游戏等等。


接下来福哥会一个一个地介绍使用c/c++、java、php、python *** 作MySQL的方法,童鞋们一定要跟上哦~~

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/tougao/643838.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-17
下一篇 2022-04-17

发表评论

登录后才能评论

评论列表(0条)

保存