Introduction to MySQL●   Introduction●   Installation●   SQL●   Schema design●   PerlBITS/VIB Bioinformatics Training – Ju...
Introduction to MySQL●   Introduction●   Installation●   SQL●   Schema design●   PerlBITS/VIB Bioinformatics Training – Ju...
Databases●   A database is a collection of data    –   numbers    –   dates    –   text or labels    –   …●   A Database M...
Relational Databases●   Rigid structure●   2 dimensional tables:     –   columns (fields)    –   rows (records)
Relational Databases●   Model objects (entities) and their relationships●   Eg a store sells products to customers    –   ...
Relational Databases●   MySQL Workbench:    –   graphical representation of entities and relationships    –   generates SQ...
Relational Database Management            Systems (RDBMS)●   Enforce data intergrity:    Honors constraints on columns●   ...
RDBMS●   Commercial products:    –   Oracle    –   DB2 (IBM)    –   MS SQL Server (Microsoft)●   Open­source offerings:   ...
NoSQL●   Key­value stores    –   Berkeley DB●   Document databases – unstructured data    –   CouchDB    –   MongoDB    – ...
Introduction to MySQL●   Introduction●   Installation●   SQL●   Schema design●   PerlBITS/VIB Bioinformatics Training – Ju...
Installing MySQL on Linux●   For DEB based Linux distributions    (Debian, Ubuntu, …)    # apt­get install mysql­server●  ...
Installing MySQL on Windows●   An installable (MSI) package is available on the     MySQL site:  ...
Running MySQL●   To start / stop / restart the MySQL service:    # service mysql start    # service mysql stop    # servic...
Running MySQL●   To check whether or not mysql is running     correctly:    # service mysql status    mysql start/running,...
Exercises●   Install MySQL●   Start the service●   Check whether or not the service has been started
The MySQL monitor●   To connect or log on to a MySQL database     service:    $ mysql●   The MySQL monitor has many option...
The MySQL monitor●   The most important options are:    $ mysql [options] [database]     ­u uname | ­­user=uname      defa...
The MySQL monitor●   Once connected to the database server, you can     execute SQL statements:    mysql> statement;●   Ev...
Exercises●   Make sure you do these exercises as a normal     UNIX user, and not as root.●   Connect to the database and e...
Securing the server●   The process of securing the server is automated     by running the script    # mysql_secure_install...
Securing the server●   As an extra precaution, we will prevent any     external access to the database server. This is    ...
Exercises●   Secure your MySQL installation●   Repeat the last exercise:    –   it is no longer possible to log in with yo...
Database Users●   In principle, database users and OS users are     completely independent from each other:    –   If no u...
Database Users●   To create a database user, connect to the database     server as root and issue the following statement:...
Exercises●   Create a database user:    –   the database user has the same name as your UNIX         account    –   the ho...
The options file●   To avoid having to type your password every     time you connect to the database service, you can     ...
The options file●   As an example, the password will be put in an     options file.●   Looking at the command line paramet...
Exercises●   Create an options file and put the password in●   Make sure the options file is protected on the OS     level...
Database User Privileges●   The created user has very limited privileges. To     grant privileges prv on table tbl in data...
Getting Help●   An extensive help system is available in the     MySQL monitor:    mysql> help    This gives an overview o...
Getting Help ­ Demo●   How to get help for creating users:    mysql> help    mysql> help contents    mysql> help account m...
BITS: Introduction to MySQL - Introduction and Installation
Upcoming SlideShare
Loading in …5

BITS: Introduction to MySQL - Introduction and Installation


Published on

BITS: Introduction to relational databases and MySQL - Module 1: Introduction and Installation


Published in: Education, Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

BITS: Introduction to MySQL - Introduction and Installation

  1. 1. Introduction to MySQL● Introduction● Installation● SQL● Schema design● PerlBITS/VIB Bioinformatics Training – Jun 24, 2011 – Luc Ducazu <>
  2. 2. Introduction to MySQL● Introduction● Installation● SQL● Schema design● PerlBITS/VIB Bioinformatics Training – Jun 24, 2011 – Luc Ducazu <>
  3. 3. Databases● A database is a collection of data – numbers – dates – text or labels – …● A Database Management System – Data storage – Data retrieval – Data manipulation – Authentication & Authorization
  4. 4. Relational Databases● Rigid structure● 2 dimensional tables:  – columns (fields) – rows (records)
  5. 5. Relational Databases● Model objects (entities) and their relationships● Eg a store sells products to customers – Entities: ● Customers Attributes: name, address, telephone number... ● Products  Attributes: name, price... – Relationships: ● Sale Attributes: quantity, timestamp...
  6. 6. Relational Databases● MySQL Workbench: – graphical representation of entities and relationships – generates SQL statements to create database & tables
  7. 7. Relational Database Management  Systems (RDBMS)● Enforce data intergrity: Honors constraints on columns● Enforce referential integrity: Honors constraints on relations● See also: the 12 rules of Edgar Codd
  8. 8. RDBMS● Commercial products: – Oracle – DB2 (IBM) – MS SQL Server (Microsoft)● Open­source offerings: – MySQL (Oracle) Forks: ● MariaDB ● Drizzle – PostgreSQL – SQLite
  9. 9. NoSQL● Key­value stores – Berkeley DB● Document databases – unstructured data – CouchDB – MongoDB – Cassandra (FaceBook)● See also:
  10. 10. Introduction to MySQL● Introduction● Installation● SQL● Schema design● PerlBITS/VIB Bioinformatics Training – Jun 24, 2011 – Luc Ducazu <>
  11. 11. Installing MySQL on Linux● For DEB based Linux distributions (Debian, Ubuntu, …) # apt­get install mysql­server● For RPM based Linux distributions (RHEL, Fedora, CentOS, ...) # yum install mysql­server
  12. 12. Installing MySQL on Windows● An installable (MSI) package is available on the  MySQL site: – Follow the Downloads (GA) link – Choose MySQL Community Server – Select Microsoft Windows as platform
  13. 13. Running MySQL● To start / stop / restart the MySQL service: # service mysql start # service mysql stop # service mysql restart● When starting MySQL for the first time, the  system administrator is reminded that the MySQL  setup is not yet secured
  14. 14. Running MySQL● To check whether or not mysql is running  correctly: # service mysql status mysql start/running, process 3394 # ps ­ef | grep mysql mysql  3394  1  0 12:09 ?  00:00:00  /usr/sbin/mysqld # netstat ­ltpn | grep mysql tcp 0 0*  LISTEN  3394/mysqld 
  15. 15. Exercises● Install MySQL● Start the service● Check whether or not the service has been started
  16. 16. The MySQL monitor● To connect or log on to a MySQL database  service: $ mysql● The MySQL monitor has many options, you can  review them using: $ man mysql or  $ mysql ­­help
  17. 17. The MySQL monitor● The most important options are: $ mysql [options] [database]  ­u uname | ­­user=uname default: UNIX account  ­p [pwd]| ­­password[=pwd] default: <none> if pwd not given, prompt for password  ­h hname | ­­host=hname default: localhost  ­P prt | ­­port=prt default: 3306
  18. 18. The MySQL monitor● Once connected to the database server, you can  execute SQL statements: mysql> statement;● Every SQL statement should end with a semi­ colon (;)
  19. 19. Exercises● Make sure you do these exercises as a normal  UNIX user, and not as root.● Connect to the database and execute the  following SQL statements: mysql> select current_user; mysql> show databases;● Connect to the databases as user root and execute  the same statements.● Do you understand the (security) implications?
  20. 20. Securing the server● The process of securing the server is automated  by running the script # mysql_secure_installation as root: – Changes the root password – Removes anonymous users – Disallows remote root logins – Removes the test database
  21. 21. Securing the server● As an extra precaution, we will prevent any  external access to the database server. This is  done by putting the following line in the global  config file (/etc/mysql/my.cnf) (*): [mysqld] bind­address =● After restarting the MySQL service, verify with # netstat ­ltpn | grep mysql tcp 0 0* LISTEN 1228/mysqld● (*) On standard MySQL installations, the global  config file is /etc/my.cnf
  22. 22. Exercises● Secure your MySQL installation● Repeat the last exercise: – it is no longer possible to log in with your ordinary  UNIX account ­ why ? – you can still login as root, but with a twist...
  23. 23. Database Users● In principle, database users and OS users are  completely independent from each other: – If no user is specified when executing mysql,  the OS user is taken – The database superadmin is called root@localhost This user can do anything, including dropping  databases● It is not a good idea to always connect to the DB  as root. Try to log in as a less privileged user as  much as possible.
  24. 24. Database Users● To create a database user, connect to the database  server as root and issue the following statement: mysql> create user dbuser[@host]        [identified by passwd];● In this statement is: – dbuser: the user to be created – host: the hostname from which the user is going to  connect ­ if not specified the user can connect from  any host (%) – passwd: the password needed to connect to the  database server
  25. 25. Exercises● Create a database user: – the database user has the same name as your UNIX  account – the hostname is localhost – you are free to choose the password● Try to connect as this user and execute the  following SQL statements: mysql> select current_user; mysql> show databases;
  26. 26. The options file● To avoid having to type your password every  time you connect to the database service, you can  create an options file: – the file name is .my.cnf – this file is located in your home directory – since it might contain a password, protect it from  preying eyes: mode 600● The format of .my.cnf is similar to Windows  ini­files: it contains key=value pairs in [sections]● In fact, the key=value pairs are provided as  (invisible) command line parameters
  27. 27. The options file● As an example, the password will be put in an  options file.● Looking at the command line parameters of  mysql (and almost all client applications), the  password can be provided as: $ mysql ­­password=pwd● The options file contents could look like this: [client] password=pwd
  28. 28. Exercises● Create an options file and put the password in● Make sure the options file is protected on the OS  level● Try to connect to the database without specifying  a password
  29. 29. Database User Privileges● The created user has very limited privileges. To  grant privileges prv on table tbl in database db,  you need to execute the following statement: mysql> grant prv on db.tbl                    to user@host;● Some convenient wild cards: – To grant all privileges, specify all as prv – To include all databases, specify * as db – To include all tables, specify * as tbl● The given database and table names do not have  to exist (yet)
  30. 30. Getting Help● An extensive help system is available in the  MySQL monitor: mysql> help This gives an overview of commands you can use  to customize the output● You can get help on any function or statement: mysql> help contents This shows you the broad topics of available  help. You can drill down into any of these topics
  31. 31. Getting Help ­ Demo● How to get help for creating users: mysql> help mysql> help contents mysql> help account management mysql> help create user● How to use less as a pager: $ export PAGER=/usr/bin/less $ mysql mysql> pager PAGER set to /usr/bin/less
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.