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

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个回答

所属标签

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