你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

mysql学习分享

[复制链接]
gaosmile 发布时间:2020-8-18 18:07
在写今天关于数据库的文章之前,还是说一下这近一年来做笔记的感受,我通过这种学习方式:一边学习一边总结笔记,日后方便查看和理解;这一点在我从零基础学习c语言和Linux应用上体现的淋漓尽致,从平时和大家的沟通交流,我能够去通过以前写的笔记,做到温故而知新,同时再给网友讲解里面的原理的时候,又进一步加深了对该知识的理解。
有一句耳熟能详的一句话:好记性不如乱笔头;当我们没有别人那么有天赋,唯一能够改变自己的方式就是:勤奋+方法+执行力+不怕吃苦;总之记笔记的重要性不言而喻。
一、简单聊聊数据库这“仓库”:
老实说,对于大部分做嵌入式的人来说,接触数据库不是很多;数据库对于互联网开发行业来说,运用那是家常便饭了。那么对于我们搞嵌入式的人来说,学习数据库,我觉得刚开始不要太注重理论化的东西,先去学习一下实操,等对实操达到了一个轻车驾熟的入门(算是简单操作的入门)之后,那么这个时候去看理论的东西,就不会太吃力了,你只要根据理论的东西,你有不懂的可以去做实验,这里对理论就会掌握的更加熟练(其实说到这里,可能这是我自己的学习方法,不一定适合你);因为从很多技术群和平时的沟通交流来看,有的时候,特别是现在在这个“浮躁”的时代,能够通过书籍理论去学习新的技能人比较少(至少在我的周围是这样的,但是这个不能一概而论;毕竟世界这么大,奇人异事多了去。),因为大部分人看不下去或者看不懂(我这里举个例子,比如说你去看linux内核的书籍,没有一定的基础打底,你直接去看,那简直就是在看天书,能够看懂多少,每个读者自身体会最为亲切了);所以总体来说,先实践后理论(我这里指的先实践是指通过视频学习,当然视频学习里面,讲师也会讲解理论,然后带你实操;所以理论就指的是,大部分人看视频学习,可能会看几遍,但是一些理论性的东西看视频的人可能并没有掌握,为啥这么说,你看视频学习,一下不能把视频里面那么多信息一下消化掉,所以就要视频后的理论学习巩固了),这是比较合适的去学习一些新东西,当然我这里可能限于嵌入式或者互联网学习方面(各个行业情况不能一概而论)。
好了,上面说的废话有点多,但是还是要废话一下;现在咋们就简单来聊聊数据库这“仓库”。数据库,从字面意思看,库可以想成在农村装粮食的仓库,这个仓库肯定是来放东西,这里的东西就是指数据库了;所以简单来说,这个数据库用来存放东西的,当然能够存东西,也就能够从里面取出东西来;这里关于数据库就简单介绍到这里了,我不希望这系列学习笔记文章分享,太按照理论化或者说完全按照书上那样来分享,更多的是实操来分享。理论的东西说实话,通过写了这么久的公众号也发现到,如果不是理论写的不是很幽默或者很有技术文底的话,大部分人还是只是简单的瞄一下,真正会用心去看的人还是比较少的(我这里说出自己的感受,关键学习的东西还是要靠自己),还是实操性的东西比较直观,也更加通俗易懂。
二、安装mysql数据库:
这里我是ubuntu 14.04-server版本上安装的mysql-server-5.6:
1、安装mysql:
sudo apt-get install mysql-server-5.6
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following extra packages will be installed:
  libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18
  libterm-readkey-perl mysql-client-5.6 mysql-client-core-5.6 mysql-common
  mysql-common-5.6 mysql-server-core-5.6
Suggested packages:
  libclone-perl libmldbm-perl libnet-daemon-perl libplrpc-perl
  libsql-statement-perl libipc-sharedcache-perl mailx tinyca
The following NEW packages will be installed:
  libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18
  libterm-readkey-perl mysql-client-5.6 mysql-client-core-5.6 mysql-common
  mysql-common-5.6 mysql-server-5.6 mysql-server-core-5.6
0 upgraded, 11 newly installed, 0 to remove and 50 not upgraded.
Need to get 21.6 MB of archives.
After this operation, 167 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

在这个安装过程中,会跳出要你设置mysql的登入密码(当然还要重复输入一遍密码):
微信图片_20200818175423.png
2、进入mysql:
在安装完毕之后,我们就可以来进入mysql,这里进入mysql有两种形式:
(1)第一种形式:
txp@ubuntu:~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 45
Server version: 5.6.33-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

注解:“-u”表示登入的用户名,"-p"表示用户登入的密码。
(2)第二种形式:
txp@ubuntu:~$ mysql -u root -p1121518wo
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 46
Server version: 5.6.33-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

注解:这里我在"-p"后面直接输入登入密码,就不会再叫你输入密码了。
3、开始进行实践了:
(1)列出当前数据库服务器(mysql-server-5.6)里面到底有多少数据库种类(应该说当前数据库服务器里面能够使用数据库):
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.10 sec)

注解:这里可以看到我们可以有三个数据库可用。同时还要注意一下,show databases后面有一个“;”分号,在mysql里面每写一条语句都有";",这和我们写c和c++里面的语法知识一样,每条语句后面必须加";",不然就会报错。
(2)使用mysql:
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

(3)显示mysql中的数据表:
表又是啥呢,你可以联系一下我们平时做execl表格,这里的表就类似execl表格,这个表格里面每行和每列都有数据,当然所代表的意思也不同:
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
28 rows in set (0.01 sec)

4、图解上面说到的服务器数据库、数据库、数据表的关系:
微信图片_20200818175428.png
注解:这里的关系是:数据库服务器包含数据库(databases),而数据库又包含数据表(table)。
5、在实际后台开发的过程中,我们的数据库不是和我们程序员写的代码放在一起的,这里我们用一张来分析:
微信图片_20200818175432.png
注解:这里我们只要简单明白,我客户端通过通信协议和我们业务代码进行对接,业务代码(也就是节点服务器)再向数据库服务器里面拿自己想要的东西来返回给客户端就行,具体里面涉及到的原理,咋们现在不要去关。
6、使用mysql workbench进行远程连接数据库服务器:
当然关于这个mysql workbench的安装,读者可以直接去mysql的官方下载,然后直接按照网上教程走就行,基本都是“傻瓜式”操作,没啥要注意的地方。
现在我们来用这个软件连远程连接mysql-server-5.6:
(1)
微信图片_20200818175436.png
(2)
微信图片_20200818175439.png
(3)这里我的远程数据库服务器地址是(192.168.40.154):
微信图片_20200818175442.png
注解:这里我们发现连接不上。
(4)进行相关的配置:
txp@ubuntu:~$ cd /etc/mysql/
txp@ubuntu:/etc/mysql$ ls
conf.d  debian.cnf  debian-start  my.cnf
txp@ubuntu:/etc/mysql$ sudo vim my.cnf


微信图片_20200818175445.png
注解:关于这个回环地址(127.0.0.1),它的意思机器本身内部来使用,外部不能通过这个地址来访问我们的机器,所谓的内部使用的意思是说,该机器本身的两个进程之间可以通过这个地址进行通信。
现在我们重新启动一下mysql试试看能不连接上:
txp@ubuntu:/etc/mysql$ sudo /etc/init.d/mysql restart
mysql stop/waiting
mysql start/running, process 3546

然后还是会出现连接不上:
微信图片_20200818175449.png
(5)再进行配置:
微信图片_20200818175452.png mysql> select Host, User from user where User='root';
+-----------+------+
| Host      | User |
+-----------+------+
| 127.0.0.1 | root |
| ::1       | root |
| localhost | root |
| ubuntu    | root |
+-----------+------+
4 rows in set (0.00 sec)

微信图片_20200818175456.png
说明:这里修改了这个配置还是连接不上。于是乎我们就来创建一个用户来实现这个功能了
mysql> create user 'txp'@'%' identified by '1121518wo';
Query OK, 0 rows affected (0.01 sec)

mysql> select Host, User from user;
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| %         | txp              |
| 127.0.0.1 | root             |
| ::1       | root             |
| localhost | debian-sys-maint |
| localhost | root             |
| ubuntu    | root             |
+-----------+------------------+
6 rows in set (0.00 sec)

注解:%表示任意的地址。
微信图片_20200818175459.png
说明:这里可以看到连接成功,哈哈。一般我们操作也是普通用户来操作,最后不用root用户来操作。
(6)进行连接:
微信图片_20200818175502.png
连接进入界面的显示:
微信图片_20200818175506.png
然后在里面进行操作:
微信图片_20200818175509.png
注解:这说明我们现在用户txp权限不够。
赋予这个用户txp权限:
mysql> grant select on mysql.* to 'txp'@'%';
Query OK, 0 rows affected (0.00 sec)


现在看看能不能进行操作了:
微信图片_20200818175512.png
注解:操作成功,当然这里也可以赋予该用户所有的权限:
mysql> grant all privileges on *.* to 'txp'@'%';
Query OK, 0 rows affected (0.00 sec)


三、总结:
本次的mysql学习分享就到这里了

收藏 评论0 发布时间:2020-8-18 18:07

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版