在Mac上探索MySQL的安装与使用
Posted 生信星球
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Mac上探索MySQL的安装与使用相关的知识,希望对你有一定的参考价值。
今天是生信星球陪你的第783天
大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~
就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~
这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!
豆豆写于2021.1.29
---------------------------------------
首先还是感谢大家对我们的祝福啦:
现在看还是那么地激动!
---------------------------------------
最近打算迁移一个数据库,看到原来数据库使用到了mysql的方法,来学习一下怎么使用吧。这次主要看Mac系统的,其实都是现成的软件,然后加上一些基础命令的使用,所以windows应该也差不多
背景介绍
什么是数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,
每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。
什么是MySQL
来自:https://jerrynest.io/mysql-tutorial/
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/
然后它会很有心机地让你注册,其实不需要:
接着安装
安装过程需要注意:倒数第二步有一个设置管理员密码的操作,这一步的密码一定要切记!
它关乎到后面链接数据库的过程【当然,如果后期真的忘记密码,也有补救措施,不要慌】
安装完,就会在系统设置中看到,多了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 语法中,对关键词是不区分大小写的,比如
create
或CREATE
都是可以的。在 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/)
点击底部的“阅读原文”,获得更好的阅读体验哦 以上是关于在Mac上探索MySQL的安装与使用的主要内容,如果未能解决你的问题,请参考以下文章