270 likes | 457 Views
A Brief Introduction to MySQL. By Nishkam, Neeraj,Saurabh, Hrishikesh and Somesh. Pointers. What is MySQL ? Its good features. Installation guide. Security and Privilege System Compatibility with standards Locks – an interesting feature Table types Some more salient features Replication.
E N D
A Brief Introduction to MySQL By Nishkam, Neeraj,Saurabh, Hrishikesh and Somesh
Pointers • What is MySQL ? Its good features. • Installation guide. • Security and Privilege System • Compatibility with standards • Locks – an interesting feature • Table types • Some more salient features • Replication
What Is MySQL? • A fast, reliable, easy-to-use, multi-user multi-threaded relational database system. • It is freely available and released under GPL (GNU General Public License ).
Why Use MySQL ? • MySQL server can handle very large databases. • Offers rich and very useful set of functions. • Connectivity, speed and security make MySQL very suited for accessing database on a network. • A lot of contributed software available.
What Does MySQL Offer ? • A privilege and password system that is very flexible and secure and allows host-based verification. • Multi-threaded request-handling using kernel thread. • Replication features. • Very actively developed. • Memory leak proof.
Quick Installation Guide • tar –zxvf Mysql.x.xx.xx.tar.gz • cd Mysql-x.xx.xx.xx • ./configure –prefix=/usr/local/mysql • make • make install • scripts/mysql_install_db • safe_mysqld • Mysql –u root password ‘mypassword’
Configuring MySql • --bindir=Dir specifies dir for binaries • --localstatedir=Dir data dir • --with-tcp-port=portno • --with-unix-sock-path=absolute-path • --with-mysqld-ldflag=-all-static • --with-charset=charset (default Latin1) • --with-low-memory
Support • Works on many different platforms like FreeBSD , NetBSD , Linux 2.0+, Windows ’95, ’98, 2000 & NT, HP-UX etc • There are client tools and APIs available in c, c++, java, perl, python, php, Tcl
Security in mysql • Issues that bother: eavesdropping,altering • Uses ACL’s (Access Control Lists) , also there’s some support for SSL connections • Has inbuilt methods for storing confidential data like passwords in encrypted form. • Access is restricted thru grant of privileges to users,hosts
Privileges provided by mysql • The five tables: user,db,host,tables_priv,columns_priv • The privileges come into play only if there is a retrieval of data from the database, or updation of data in the database,e.g: select 1+1; calculator • File privilege : load data infile, select …. Into outfile
How the privilege system works • First reference to user followed by db and host , takes place during connection verification • Reference to tables_priv and columns_priv at data access stage • Ordering of user table on the basis of more specific host values first, followed by more specific user values. • For security purposes , mysql disallows host addresses of the form :192.168.7.yahoo.com
Some tips on security • Beneficial to invest in a firewall ; check using “telnet server_port 3306” • Do not rely on the data entered by the user, he can trick the code by using special character sequences • Make use of tcpdump, to check the whether or not mysql data streams r unencrypted: tcpdump –l –i eth0 –w – src port 3306|strings • Dont run mysqld as root. • Don’t give process and file privileges to users as far as possible.
Continued….. • Following mysqld options affect security: 1. –- secure 2. – skip-grant-privileges 3. – skip-name-resolve 4. –skip-networking • Passwords by default are stored in hashed form in database.But if the scrambled password is known the hacker can still log in as the user. • Passwords can be stored in my.cnf file when non-interactive access has to be done • Inbuilt functions for hashing: password, encrypt,encode,decode
Compatibility with Standards What doesn’t MySQL have ? • Transactions – no provision for commit and rollback • No nested sub-queries • Views are not supported • Foreign keys not used for referential integrity checks
Compatibility (contd.) What extra does MySQL have ? • Locking/Unlocking of tables • Atomicity of operations • Directory organization • Access of tables across tables • Several other features, discussed later…
More about Locks ! • Locks help in maintaining integrity, atomicity • Read locks – enable you to only read from the locked tables. • Write locks – enable you to read and write exclusively. Other threads can’t access/update currently locked tables • Write locks have higher priority than read locks
MySql Table Types • Creates a .frm file that holds the table and column definition. • Syntax for defining table type is .. : CREATE TABLE test ( ) TYPE=HEAP .. • Categorization of types : Transaction safe type and Non transaction safe type. • Transaction Safe table types allow rollbacks,restore changes if update fails ,etc . • Non Transaction Safe table types are much faster ,use less disk space as well as memory for updates.
MyISAM tables • Use B-Tree indexing to store the keys, string indexes are compressed . • MyISAM itself supports three different table formats: a) static (fixed length) b) Dynamic c) Compressed • Static : fastest ,secure and simplest format , used when there are no varchar, blob or text. • Dynamic : each record stores a header that contain its length • Compressed : created using myisampack tool , they are read only ,use very little space as each record is compressed separately • ISAM is a deprecated version of MyISAM
Merge tables • A collection of identical MyISAM tables which are used collectively. • FOR eg : CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, message CHAR(20)); CREATE TABLE t2 (a INT AUTO_INCREMENT PRIMARY KEY, message CHAR(20)) ; CREATE TABLE total (a INT NOT NULL, message CHAR(20), KEY(a)) TYPE=MERGE UNION=(t1,t2) • allowed : select ,insert and Operations update .
Heap tables and Berkley DB • Use hashed index and are stored in memory • Generally used for temporary tables . • Berkley DB is used for making the tables transaction safe
MySQL Language Reference OPTIMIZE • Syntax :: … OPTIMIZE TABLE tbl_name[,tbl_name].. • Used only for MyISAM tables • It performs the following functions :repairs the table if the table has deleted rows,sorts the index,and the statistics are also made to date. CHECK • Syntax :: … CHECK TABLE tbl_name[,tbl_name...] [TYPE = [QUICK | FAST | EXTEND | CHANGED]]
MySQL Language Reference • Checks a table for errors and updates the key statistics of the table BACKUP • BACKUP TABLE tbl_name[,tbl_name...] TO '/path/to/backup/directory‘ • This again works only for MyISAM ANALYZE • During analysis the table is locked with a read lock
MySQL Language Reference REPAIR • Syntax: REPAIR TABLE tbl_name[,tbl_name...] [TYPE = QUICK] FLUSH • Syntax : FLUSH flush_option [,flush_option] • Used to clear the internal cache of Mysql • It has various options like HOSTS,LOGS,PRIVELEDGES, TABLES tbl_names,etc
Replication in MySQL • What?? • One server is designated as the master, while the other ( or others) as slave(s) • Updates done only on master and binary logs made • The slave connects to the master, catches up on the missed updates, and then starts receiving updates immediately as they come to the master. • Why?? • For robustness you have two systems and switch to the backup if you have problems with the master. • The extra speed is achieved by sending a part of the non-updating queries to the replica server.
How To (SLAVE) • Upgrade both slave and master to 3.23.15 or higher. • PUT THESE IN my.cnf of SLAVE • master-host,user,passwd • server-id=< unique no>= 1 & <=2^32-1 • master-connect-retry !! (keep trying) • master-info-file • replicate-rewrite-db • skip-slave-start • Restart the slave(s)
How To (SLAVE) (contd) • Take a snapshot of all the tables/databases on the master • Use command LOAD TABLE <tblname> FROM MASTER (3.23.23)+ • SLAVE START/STOP • FLUSH SLAVE
HOW TO (MASTER) • log-bin , FLUSH MASTER , FLUSH SLAVE • When you start the slave thread will be created • Tables are not Locked • SET SQL_LOG_BIN=0/1 • CHANGE MASTER TO master_def_list