vlambda博客
学习文章列表

在Mac上探索MySQL的安装与使用

在Mac上探索MySQL的安装与使用 今天是生信星球陪你的第783天在Mac上探索MySQL的安装与使用


   大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~

   就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~

   这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!

豆豆写于2021.1.29

---------------------------------------
首先还是感谢大家对我们的祝福啦:


现在看还是那么地激动!

---------------------------------------
最近打算迁移一个数据库,看到原来数据库使用到了MySQL的方法,来学习一下怎么使用吧。这次主要看Mac系统的,其实都是现成的软件,然后加上一些基础命令的使用,所以windows应该也差不多

背景介绍

什么是数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,
每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。

什么是MySQL

来自:https://jerrynest.io/mysql-tutorial/

在Mac上探索MySQL的安装与使用

MySQL 是一套快速、功能强大的资料库管理系统。所谓资料库管理系统(Database Management System, 简称为DBMS),它是透过一组程式模组来组织、管理、储存和读取资料库的资料,任何使用者在操作资料库时,都需要透过资料库管理系统来处理。

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle(甲骨文)公司。

  • MySQL将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  • MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。

  • 由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

  • MySQL是一个多用户、多线程的关系型数据库管理系统。工作模式是基于客户机/服务器结构。目前它可以支持几乎所有的操作系统

RDBMS的特点
  • 数据以表格的形式出现

  • 每行为各种记录名称

  • 每列为记录名称所对应的数据域

  • 许多的行和列组成一张表单

  • 若干的表单组成database

MySQL的优势

来自https://www.w3cschool.cn/mysql/

  • 使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性

  • 支持多线程,充分利用 CPU 资源

  • 提供多语言支持

  • 可以处理拥有上千万条记录的大型数据库

  • 开源,不需支付额外费用

  • 对 PHP 有很好的支持,PHP是目前流行的 Web 开发语言

首先下载

官网在:https://dev.mysql.com/downloads/mysql/

在Mac上探索MySQL的安装与使用

然后它会很有心机地让你注册,其实不需要:

在Mac上探索MySQL的安装与使用

接着安装

安装过程需要注意:倒数第二步有一个设置管理员密码的操作,这一步的密码一定要切记!

它关乎到后面链接数据库的过程【当然,如果后期真的忘记密码,也有补救措施,不要慌】

在Mac上探索MySQL的安装与使用

安装完,就会在系统设置中看到,多了MySQL的图标,并且其中默认状态是开启

在Mac上探索MySQL的安装与使用

安装后运行

基础使用可以参考:https://gridscale.io/en/community/tutorials/mysql-datenbank-erstellen-loeschen/

打开mysql

打开终端(terminal),运行:

mysql -u root -p

查看编码格式

然后在命令提示符后面继续输入:

# 注意最后的;也要输入
show variables like '%char%';

看到其中显示utf8mb4,在最新版的mysql中,是默认安装这个的。它和utf8完全兼容,并且还支持Unicode标准,允许显示emoji表情

查看当前的数据库

mysql> SHOW DATABASES;
# 大写或小写均可
mysql> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

MySQL 默认的三个数据库:

  • mysql 存储 MySQL server 所需的系统信息

  • information_schema 提供数据库元数据的连接

  • performance_schema 监控 MySQL Server 的底层执行情况

新建一个数据库

# 同样也是大小写均可
mysql> create database testdb;
Query OK, 1 row affected (0.00 sec)

在数据库中新建用户

参考:https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql

# We specify the user’s host as localhost and not the server’s IP address
# 用户名是:guest;密码是:guest123
mysql> CREATE USER 'guest'@'localhost' IDENTIFIED BY 'guest123';
Query OK, 0 rows affected (0.00 sec)

这里的localhost指的是本地的计算机

这时,我们只是新建了一个用户,但这个用户并不能对我们的数据库进行任何操作,而且即使用新用户去登陆mysql,也是不可以的。接下来,必须要对新用户赋予权限

赋予(GRANT) 新用户权限

# 如果允许新用户访问所有数据库,第一个星号就是指的数据库【但实际操作中不推荐】
mysql> GRANT ALL PRIVILEGES ON * . * TO 'guest'@'localhost';

#
 如果只允许新用户访问某个数据库,但可以访问其中的所有表单(table),第二个星号就是table
mysql> GRANT ALL PRIVILEGES ON testdb.* TO 'guest'@'localhost';
Query OK, 0 rows affected (0.01 sec)

#
 最后把这些权限上传
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

各种权限的解释:

  • ALL PRIVILEGES:完全的访问(如果不指定某个数据库,该用户可以完全访问全部的数据库)

  • CREATE:允许用户新建数据库或表单

  • DROP:允许用户删除数据库或表单

  • DELETE:允许用户删除表单中的

  • INSERT:允许用户插入表单中的

  • SELECT:允许用户获取数据库内容

  • UPDATE:允许用户更新表单的

一般的格式是:

mysql> GRANT type_of_permission ON database_name.table_name TO 'username'@'localhost';

记得每次更新完权限以后,都要上传一下:FLUSH PRIVILEGES;

如果要取消(REVOKE)某种权限:

mysql> REVOKE type_of_permission ON database_name.table_name FROM 'username'@'localhost';
查看用户当前的权限
# 标准格式是:
SHOW GRANTS FOR 'username'@'localhost';
# 例如
mysql> SHOW GRANTS FOR 'guest'@'localhost';

+-----------------------------------------------------------+
| Grants for guest@localhost                                |
+-----------------------------------------------------------+
| GRANT USAGE ON *.* TO `guest`@`localhost`                 |
| GRANT ALL PRIVILEGES ON `testdb`.* TO `guest`@`localhost` |
+-----------------------------------------------------------+
2 rows in set (0.00 sec)
不仅删除用户权限,还将整个用户删除
# 和删除数据库一样,用drop
DROP USER 'username'@'localhost';
测试新用户能否使用
# 先退出当前
mysql> quit
Bye
# 然后
mysql -u [username] -p

删除数据库

mysql> drop database testdb;
Query OK, 0 rows affected (0.00 sec)

#
 then double check
mysql> show databases;

注意

  • mysql的代码不支持tab自动补全

  • 虽然 SQL 语法中,对关键词是不区分大小写的,比如 createCREATE 都是可以的。在 SQL 代码中应尽量保持一致,对保留字都用大写,对自造的库名、表名、列名都用小写

  • localhost 的 ip也叫做:127.0.0.1
    (https://www.howtogeek.com/225487/what-is-the-difference-between-127.0.0.1-and-0.0.0.0/)


点击底部的“阅读原文”,获得更好的阅读体验哦😻

初学生信,很荣幸带你迈出第一步

🤓生信星球 🌎一个不拽术语、通俗易懂的生信知识平台