IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Introducció al MySQL

MySQL és un sistema de gestió de bases de dades relacional (RDMS en anglès).

Oracle va comprar a MySQL, ara disposa més del 80% del mercat ja que aquests dos eren els mes utilitzats.

El Mysql s'utilitza molt en sistemes LAN.

Història

MySQL és una idea originaria de la empresa opensource MySQL AB creada inicialmente en Suecia en 1995.

Tipus de base de Dades

  • Relacionals.
  • Jeràrquic.


Instal·lació

Hi han dos opcions en sistema Linux:

tasksel

$ sudo tasksel
El tasksel utilitza el ncurse, aquesta llibreria pot emular un entorn gràfic en línia de comandes.

manual

$sudo apt-get install mysql-server

Per vore si esta eliminat podem usar:

$ nmap localhost

Per vore que hem instal·lat usem la comanda:

$ dpkg -L mysql-server

esborrar manual

Si volem eliminar el mysql hem de eliminar el mysql-server-5.1 ja que el paquet mysql depen del mysql-server-5.1

$apt-get remove mysql-server-5.1

Fitxers instal·lats

Com podem saber els paquets instal·lats?

  • Ho pode mirar pel sinaptyc.
  • Amb la comanda: dpkg -l | grep mysql


asdadsadsa Per tenir un PHP complet s'ha de instal·lar un munt de coses si és fa a pelo. QT = llibreria del KDE

Control del servei

apgar i orbir serveis

$ sudo /etc/init.d/mysql [start|stop|restart|reload]

La majoria de cops tendríem de fer reload per a reiniciar-ho però sense aturar-se.


En versions més noves s'ha d'utilitzar la comanda:

$ sudo service mysql [start|stop|restart|reload]

matar el procés

$ sudo kill (número del procés)

Per matar un servei instantàniament( -9) s'usa:

$ sudo kill -9 (número del procés)

Comprovar si Mysql funciona

  • Connectar-se a la BD i provar si es pot accedir
$ sudo mysql -p
  • Si no ens recordem del password usem: $ sudo dpkg-reconfigure mysql-server-5.1
  • $ nmap localhost
  • Si volem vore els ports mirem el fitxer: cat /etc/services | grep ftp
  • $ nmap 192.168.202.111

No es pot visualitzar perquè solament des de la nostra maquina ens podem connectar al mysql(només interficie loopback).

  • $ sudo /etc/init.d/mysql status

Aquesta comanda mostra informació del mysql

Configuració

1-Saber que s'ha instal·lat

$ dpkg -L mysql-server-5.1 | grep "/etc"

/etc/mysql/my.cnf

Són configuracions extra.

És un arxiu dinàmic i no es visualitza al grep.

Es pot escollir al lloc on desa este fitxer(com tot el Linux que es configurable).

Sempre que es modifica algo del fitxer s'ha de reiniciar el servei.


propietats, opcions del fitxer

:*/var: conte variables com la base de dades, etc. :*nice : És la prioritat del procés, la prioritat 0 és la normal, la que te al majoria de processos. :*user : Aquest usuari esta per seguretat, és per si algu entra sol pugues modificar el que té permet l'usuari mysql (és per no haver superusuari). :*datadir: És on es guarda les base de dades :*bind-address: L'adreça IP per la qual posem el servidor a escoltar. (Si no es necesita no cal modificar ja que es mes rapid el socket local). :*!includedir /etc/mysql/conf.d/: Inclueix la carpeta, s'usa el include per a que no "choquen" els fitxers per les diferents versions.

Fitxers de errors

/var/log/mysql/error.log

En aquesta carpeta és guarden tots els errors del servidor.

com mirar el fitxer sense comentaris

[Traure comentaris]

Si els comentaris comencen amb el caràcter "#" podem utilitzar grep per mostrar només les línies que no tenen el caràcter:

$ cat /etc/apache2/apache2.conf | grep -v '^#'

El simbol carat és una expressió regular que indica començament de línia.

Si a més volem treure les línies en blanc:

$ cat squid.conf | grep -v '^#\|^$\|^;'

Si vols modificar un fitxer, primer entres a la carpeta i crees una copia de seguretat:

$ cd /etc/mysql
$ sudo mv my.cnf my.cnf.original

després fas la comanda:

$ sudo bash -c "cat /etc/mysql/my.cnf.original | grep -v '^#' > /etc/mysql/my.cnf"

Eines Gràfiques

mysql-adim

http://www.mysql.com/

instal·lem el mysql-adim

$ sudo apt-get install mysql-admin

mirem els fitxers instal·lats

$ dpkg -L mysql-admin | grep bin
$ dpkg -L mysql-admin | grep etc
$ dpkg -L mysql-admin | grep doc

Per iniciar:

$ mysql-admin

un cop dins posem:

Address: localhost Usuari: root Password: *********


Service-control: alternativa al service. Startup Parametres: Canviar els paràmetres de configuració User Administration: Administració d'usuaris Server Connections: Saber quants usuaris tens connectats al servidor. Health: Veure quanta CPU esta usant, quantes comandes esta executant-se, etc. Server Logs: Motra els errors del mysql


Serveix per entrar a la maquina servidor sense entorn gràfic.

$ ssh -L 5678:localhost:3306 [email protected]

mysql-query-browser

$ sudo apt-get install mysql-query-browser

Practica my.cnf

Modificar la IP per a que els de la xarxa puguin veure el mysql.

Primerament anem a /etc/mysql/my.cnf i canviem el bind-adrress.

My1.jpeg

My2.jpeg

Fem un nmap al del costat per veure si ell ho ha modificat be.

My3.jpeg

Neteixar MYSQL

Esborrar completament:

$ sudo apt-get remove --purgue mysql-common m
$ dpkg -l | grep ^mysql

per fer un borrat complet s'ha de borrar (borren les base de dades)

$ sudo rm -rf/var/lib/mysql

Practica mysql php

Crear una base de dades "usuaris" (funció mysql_xxx) Crear taula usuari (executant un "CREATE TABLE")

  • Camps:
  • Id: autoincremental
  • username: login
  • password: paraula de pas (en MD5, funció PHP)
  • name: nom complert de l'usuari
  • Inserir 4 usuaris nous (INSERT INTO)
  • Imprimir missatge als usuaris (ok, errors, informació, ...)
  • Mostrar els ususaris inserits amb una consulta
  • Elimineu 1 usuari (DELETE)
  • Mostreu els usuaris inserits amb una consulta
  • Modifiqueu la paraula de pas d'un usuari (UPDATE)
  • Elimineu la taula
  • Elimineu la base de dades
  • Imprimir missatge als usuaris (ok, errors, informació, ...)
#!//usr/bin/php
<?php

$HOST="localhost";
$USER="root";
$PASSWD="mcfh7kqgd";

$connexio = mysql_connect($HOST, $USER, $PASSWD);

mysql_set_charset('utf8',$connexio); 

//connectar a la base de dades
if (!$connexio) {
    die('Could not connect: ' . mysql_error());
}
echo "Connected successfully\n";

//crear la base de dades
$sql = 'CREATE DATABASE exemple';
if (mysql_query($sql, $connexio)) {
    echo "Database my_db created successfully\n";
} else {
    echo 'Error creating database: ' . mysql_error() . "\n";
}

//Seleccionar base de dades
$db_selected = mysql_select_db('usuaris',$connexio) or die('No sel·lecciona la base de dades');
if (!$db_selected) {
    die ('Can\'t use foo : ' . mysql_error());
}

//Crear taula usuaris
$sql = mysql_query('CREATE TABLE usuari (
						ID INT NOT NULL AUTO_INCREMENT, 
						username VARCHAR(20) NOT NULL, 
						password VARCHAR(20) NOT NULL, 
						name VARCHAR(50) NOT NULL, 
						PRIMARY KEY(ID))');


//insertar camps a la taula
$sql = "INSERT INTO usuari (username, password, name) VALUES ('prova1', 'prova1', 'prova1'),('prova2', 'prova2', 'prova2'),('prova3', 'prova3', 'prova3'),('prova4', 'prova4', 'prova4')";

mysql_query($sql);

//mostrar els usuaris de la base de dades

//eliminar un usuari el de la id1

//echo "selecciona l'usuari que vol eliminar";
//fgets = read

$sql = " DELETE FROM usuari WHERE id='2'";

mysql_query($sql);

//modificar la paraula de pas usuari3
$sql = "UPDATE usuari SET password='prova_modificada' WHERE id='1'";

mysql_query($sql);


?>

Crear un index desde phpmyadmin

Al phpmyadmin surt una opcio de index, creem el index, sel·leccionem la columna que volem que sigue el index, no li posem mida, ja que aixi no tindrà un màxim i li donem a guardar.

Veieu també

[[1]]

Enllaços externs

#!
-- phpMyAdmin SQL Dump
-- version 3.3.2deb1ubuntu1
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Temps de generació: 20-01-2012 a les 20:05:16
-- Versió del servidor: 5.1.41
-- Versió de PHP : 5.3.2-1ubuntu4.11

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de dades: `usuari`
--
CREATE DATABASE `usuari` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `usuari`;

-- --------------------------------------------------------

--
-- Estructura de la taula `user`
--

CREATE TABLE IF NOT EXISTS `user` (
  `dni` varchar(10) NOT NULL,
  `Nom` varchar(24) NOT NULL,
  `Cognoms` varchar(30) NOT NULL,
  `Edat` varchar(3) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Bolcant dades de la taula `user`
--

INSERT INTO `user` (`dni`, `Nom`, `Cognoms`, `Edat`) VALUES
('123456789', '0', '0', '19'),
('987456321q', 'patu', 'christian', '19');


> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 258 | usuari | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)