My SQL 101

1,344 views

Published on

MySQL basics

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,344
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
30
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

My SQL 101

  1. 1. MySQL 101 MySQL (play /maɪ ˌɛskjuːˈɛl/ "My S-Q-L",[3] officially, but also incorrectly called /ma ɪ ˈsiːkwəl/ "My Sequel") is the worlds most used[4] relational database management system (RDBMS)[5] that runs as a server providing multi-user access to a number of databases. The SQL phrase stands for Structured Query Language.[7] – Wikipedia 1 Http://slideshare.net/davestokes/presentations
  2. 2. Agenda➔ Installation➔ Starting MySQL➔ Stopping MySQL➔ Connecting to MySQL➔ Loading data➔ Looking at data➔ Backup➔ Login/Authentication➔ Where to go from here➔ Suggestions➔ Questions and AnswersDavid.Stokes@Oracle.com @stoker 2
  3. 3. Installation MySQL is available for most Operating Systems Binaries, RPMS and DEBs available Windows Source Code http://dev.mysql.com/downloads/ Is what I recommendhttp://dev.mysql.com/doc/refman/5.5/en/getting-mysql.html 3
  4. 4. Packages  sudo apt-get install mysql5  rpm -Uhv mysql5 May have slightly different names, may have client utilities separatehttp://dev.mysql.com/doc/refman/5.5/en/linux-installation.html 4
  5. 5. Binariesshell> groupadd mysqlshell> useradd -r -g mysql mysqlshell> cd /usr/localshell> tar zxvf /path/to/mysql-VERSION-OS.tar.gzshell> ln -s full-path-to-mysql-VERSION-OS mysqlshell> cd mysqlshell> chown -R mysql .shell> chgrp -R mysql .shell> scripts/mysql_install_db --user=mysqlshell> chown -R root .shell> chown -R mysql data# Next command is optionalshell> cp support-files/my-medium.cnf /etc/my.cnfshell> bin/mysqld_safe --user=mysql &# Next command is optionalshell> cp support-files/mysql.server /etc/init.d/mysql.server 5http://dev.mysql.com/doc/refman/5.5/en/linux-installation.html
  6. 6. Configuration Files shell> cp support-files/my-medium.cnf /etc/my.cnf  The configuration files have not aged well. They were written long ago. Please read through the choices to find one that best matches your system.  MySQL will use built-it defaults, almost guaranteed not to be optimal for your environment if no my.cnf is presenthttp://dev.mysql.com/doc/refman/5.5/en/binary-installation.html 6
  7. 7. Starting MySQLshell> bin/mysqld_safe --user=mysql & This command is what starts your MySQL server. It runs awrapper script as user mysql in the background. You might alsosee this wrapper wrapped/etc/init.d/mysql start or service mysql starthttp://dev.mysql.com/doc/refman/5.5/en/binary-installation.html 7
  8. 8. mysqld What is that wrapper running? The mysqld binary /usr/local/mysql/bin/mysqld –user=mysql (And other options from /etc/mysql/my.cnf)http://dev.mysql.com/doc/refman/5.5/en/mysqld.html 8
  9. 9. /etc/mysql/my.cnf Options for your [client] port=3306 MySQL Server [mysql] default-character-set=latin1 Please use as CLI [mysqld] # The TCP/IP Port the MySQL Server will listen on options are not good port=3306 for long term sanity! #Path to installation directory. All paths are usually resolved relative to this. basedir="C:/Program Files/MySQL/MySQL Server 5.5/" Use your favorite #Path to the database root change control datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/" program to track # The default character set that will be used when a new schema or table is changes # created and no character set is defined character-set-server=latin1 # The default storage engine that will be used when create new tables when default-storage-engine=INNODBhttp://dev.mysql.com/doc/refman/5.5/en/option-files.html 9
  10. 10. Configuration file has sections for the various MySQL Programs[client] Settings for client programsport=3306[mysql] General settingsdefault-character-set=latin1[mysqld] Server settings# The TCP/IP Port the MySQL Server will listen onport=3306#Path to installation directory. All paths are usually resolvedrelative to this.basedir="C:/Program Files/MySQL/MySQL Server 5.5/"http://dev.mysql.com/doc/refman/5.5/en/server-options.html 10
  11. 11. STOP!!!!!!  service mysql stop  /etc/init.d/mysql stop mysqladmin -u root shutdownhttp://dev.mysql.com/doc/refman/5.5/en/mysqladmin.html 11
  12. 12. Connecting shell> mysql db_name shell> mysql --user=user_name --password=your_password db_name mysql db_name < script.sql > output.tabUse the mysql client program to connect to the server http://dev.mysql.com/doc/refman/5.5/en/mysql.html 12
  13. 13. Connect to Another Host shell> mysql –host=host db_name shell> mysql -h host db_name These two commands are equivalenthttp://dev.mysql.com/doc/refman/5.5/en/mysql-command-options.html 13
  14. 14. Connected 14
  15. 15. s (stats)http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html 15
  16. 16. SHOW DATABASES terminate with ; or g ; ghttp://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html 16
  17. 17. q Use q to exit the mysql clienthttp://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html 17
  18. 18. Loading Data  Example databases  World  Sakila  Download from http://dev.mysql.com/doc/index-other.html shell> mysql mysql> create database worldg mysql> use worldg mysql> source world_innodb.sqlhttp://dev.mysql.com/doc/index-other.html 18
  19. 19. Looking At Data mysql> show tables; mysql> select * from City; mysql> SELECT Name, CountryCode --> FROM City → WHERE Population > 10000000; 19
  20. 20. Backup  Physical versus logical  Many options, many tools  Restoration from backup needs to be tested  shell> mysqldump --all-databases > dump.sql  shell> mysqldump --databases db1 db2 db3 > dump.sql (and to restore)  shell> mysql < dump.sqlhttp://dev.mysql.com/doc/refman/5.5/en/backup-and-recovery.html 20
  21. 21. Login/Authentication  MySQL authentication is a little primitive  The mysql database has tables for login information  Easy to get confused  Use a tool like MySQL Workbench  Be stingy with permissions  Read chapter 6 of the MySQL manualhttp://dev.mysql.com/doc/refman/5.5/en/grant-table-structure.html 21
  22. 22. mysql.user table  Host  User  Password  Privileges  Connection constraints (ssl, time, # connections)  The server will first check Host address first, then user and password.  Joe @ foo.net can have separate privs than Joe @ 127.0.0.1 and % @ foo.net can trump Joe @ foo.nethttp://dev.mysql.com/doc/refman/5.5/en/grant-table-structure.html 22
  23. 23. Workbench Administrative Viewhttp://dev.mysql.com/doc/refman/5.5/en/workbench.html 23
  24. 24. You can use the CLI but ... Yes, you can type in themysql> select * from user where User=joe limit 1G*************************** 1. row *************************** Host: % User: joe settings for a new account Password: Select_priv: N Insert_priv: N Update_priv: N by hand but it is easy to Delete_priv: N Create_priv: N Drop_priv: N Reload_priv: N fat finger one of the thirty Shutdown_priv: N Process_priv: N File_priv: N Grant_priv: N privs. References_priv: N Index_priv: N Alter_priv: N Show_db_priv: N Super_priv: N Create_tmp_table_priv: N Lock_tables_priv: N Execute_priv: N Repl_slave_priv: N Repl_client_priv: N Create_view_priv: N Show_view_priv: N Other tools have similar Create_routine_priv: N Alter_routine_priv: N Create_user_priv: N Event_priv: N features and you should Trigger_priv: NCreate_tablespace_priv: N ssl_type: ssl_cipher: use them to avoid dumb x509_issuer: x509_subject: max_questions: 0 max_updates: 0 errors. max_connections: 0 max_user_connections: 0 plugin: authentication_string: NULL 24
  25. 25. Where To Go From Here Training  Classes  Mysql.com/training  Local user groups or colleges  Webinars  Conferences  MySQL Connect/Oracle Open World  MySQL Innovation Day (Webcast)  SELF  Planet.MySQL.Com  Forums.MySQl.Com 25
  26. 26. Suggestions MySQL Administrators Bible – Sheeri Cabral 26
  27. 27. Also SuggestedHigh Performance MySQL- Schwartz, Zaitsev, andTkachenko3rd Edition!!! 27
  28. 28. A New SeriesEffective MySQL Backup and Recovery, EffectiveMySQL Optimizing Statements, Ronald Bradford 28
  29. 29. MySQL CertificationAging but stillthe CertificationGuide 29
  30. 30. Questions/AnswersDavid.Stokes@Oracle.com @stoker 30

×