Email: pacolinux arroba inicia punto es
Web: http://aldarias.es/pacodebian
Con Linux Debian. En Valencia (España)
El documento tiene version .html, y .pdf, cambiando en el navegador la parte final podrás acceder a ambos.
Este documento es de libre reproducción siempre que se cite su fuente.
Realizado con: LATEX
Vamos a ver la forma de poder crear páginas web de forma dinámica.
Aquí se describe el proceso de instalación y puesta en marcha, además de un ejemplo.
Php en un lenguaje incluido dentro de las páginas web, que permite consultar bases de datos y construir las páginas web.
Mysql es un motor de base de datos relacionales. Aquí se almacenará la información.
La gestión de datos de mysql lo haremos mediante web usando phpmyadmin.
Las páginas webs con php deben abrirse con apache, a su vez, php construye la página en el servidor web, y devuelve al cliente los resultados. Por lo cual, el cliente nunca ve como está hecha la página en php.
Los requisitos software son:
Partiendo que dispongo de Linux Debian Woody.
Desde consola y como root:
apt-get install apache apache-common php4 php4-mysql phpmyadmin mysql-server mysql-common mysql-client php4-mysql
Vamos a cambiar la contraseña de root.
Desde consola como root:
Arrancamos mysql:
/etc/init.d/mysql start
Entramos en mysql:
mysql -u root mysql
Dentro de mysql cambiamos la clave de root:
UPDATE user SET Password=PASSWORD('miclave') WHERE user='root'
FLUSH PRIVILEGES;
Nos salimos:
quit
Nota: La próxima vez q entremos como root en mysql:
mysql -u root -p mysql
Desde consola como root.
Arrancamos apache:
/etc/init.d/apache start
Pondremos en el navegador web:
http://localhost/phpmyadmin/
Pondremos:
Username:root
Password: miclave
- Arrancar el servidor:
su -c "/etc/rc.d/myslqd start"
- Entrar:
1) /usr/bin/mysql
coge el usuario por defecto
2) /usr/bin/mysql -u root mysql
entramos como usuario root en la bd mysql
1) Opcion 1
shell> mysql -u root mysql\\ mysql> UPDATE user SET Password=PASSWORD('new_password') WHERE user='root'; mysql> FLUSH PRIVILEGES;2) Opcion 2:
shell> mysqladmin -u root password new_password
- Ver BD: SHOW DATABASES;
- Usar BD: USE PACO;
- Crear BD: CREATE DATABASE web;
- Para ejecutar scritps de creacion de tablas ...:
mysql -u root -h localhost -p -D web < nuke.sql\\
1. Crear la bd.
su
mysql -p
entrar pass de root
create table ejemplodb
2. Dar privilegios de la bd ejemplodb al usuario paco:
GRANT ALL ON ejemplodb.* TO paco;
mysql> SELECT Host,User FROM mysql.user WHERE User='';
mysql --user=paco -p ejemplodb
Nota:
Una herramienta visual para mysql es: mysqlnavigator
Al entrar debemos poner:
host: localhost
# mysql -u root -p CREATE DATABASE moodle; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.* TO moodleuser@localhost IDENTIFIED BY 'yourpassword'; quit # mysqladmin -p reload
Para poder acceder al servidor Linux y acceder a MySQl no basta con lo anterior, sino que tenemos que dar privilegios a los usuarios para que puedan acceder a las Base de Datos y Tablas que contiene MySQL
Para hacer esto necesitaremos acceder a la consola del servidor y acceder a MySQL
Para empezar accederemos como root a la Tabla mysql, donde se dan todos los privilegios de acceso a todos los usuarios
shell> mysql -user=root mysql Ahora indicamos que desde la IP 192.168.0.2 el usuario: gigi, con el password: gigi, va a poder acceder a la Base de datos MySQL
mysql> INSERT INTO user (Host,User,Password) VALUES('192.168.0.2','gigi',PASSWORD('gigi'));
Ahora indicamos que desde la IP 192.168.0.2 el usuario: gigi, puede acceder a la tabla: mytabla con los privilegios de: Seleccionar, Insertar, Modificar, Borrar, Crear, y Borrar
mysql> INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv, Create_priv,Drop_priv) VALUES ('192.168.0.2','mytabla','gigi','Y','Y','Y','Y','Y','Y');Por ultimo le indicamos que empiece a aplicar estos privilegios en este momento
mysql> FLUSH PRIVILEGES;
Fijaros que las instrucciones siempre terminan con punto y coma (;)
mysqldump -u -p > archivo.backup.sql
1) Paramos el servicio:
/etc/init.d/mysql stop
2) Ejecutamos:
mysqld_safe --skip-grant-tables &
(he perdido mucho tiempo porque en la solución venía "safe_mysqld", supongo que sería el nombre del comando en versiones más viejas).
3) Ponemos un nuevo password a root:
mysqladmin -u root flush-privileges password "nuevopassword"
4) Reiniciamos el servicio:
/etc/init.d/mysql start
Veamos una Web que permite comprobar si funciona el php en apache.
Copiar este esto en un fichero q se llame phptest.php y abrirlo con el navegador así: http://127.0.0.1/phptest.php
<html> <body> <?php phpinfo(); ?> </body> </html>
En este ejemplo se puede: Listar, Alta, Baja, Modificaciones registros.
CREATE TABLE `incidencias` ( `cod` CHAR(5) NOT NULL AUTO_INCREMENT PRYMARY, `fecha` DATE NOT NULL, `hora` CHAR(5) NOT NULL, `profesor` VARCHAR(30) NOT NULL, `aula` TINYINT(15) NOT NULL, `pc` TINYINT(6) NOT NULL, `solucionado` CHAR(2) NOT NULL, `des` VARCHAR(50) NOT NULL ) COMMENT = 'Incidencias de los pcs';
INSERT INTO `incidencias` (`fecha`, `hora`, `profesor`, `aula`, `pc`, `solucionado`, `des`) VALUES ('2003-12-31', '20:30', 'Paco', '1', '1', 'S', 'PRUEBA');
<HTML> <HEAD> <TITLE>INCIDENCIAS</TITLE> </HEAD> <center> <H1>Gestión de Incidencias</H1> <hr> <table border=1 > <tr><td> <A HREF="listado.php" TARGET=Der>Listado</A><BR> </td></tr> <tr><td> <A HREF="nuevo.html" TARGET=Der>Nuevo</A><BR> </td></tr> <tr><td> <A HREF="borrar.html" TARGET=Der>Borrar</A><BR> </td></tr> <tr><td> <A HREF="modificar.html" TARGET=Der>Modificar</A><BR> </td></tr> <tr><td> <A HREF="borrartodos.php" TARGET=Der>Borrar todos</A><BR> </td></tr> </table> <hr>
<HTML> <HEAD><TITLE>LISTADO</TITLE></HEAD> <FONT COLOR='blue'> <CENTER> <H1>LISTADO</H1> <TABLE BORDER=1 WIDTH=90%> <TR><TD ALIGN='center'><FONT COLOR='blue'>COD</FONT></TD> <TD ALIGN='center'><FONT COLOR='blue'>FECHA</FONT></TD> <TD ALIGN='center'><FONT COLOR='blue'>HORA</FONT></TD> <TD ALIGN='center'><FONT COLOR='blue'>PROF</FONT></TD> <TD ALIGN='center'><FONT COLOR='blue'>AULA</FONT></TD> <TD ALIGN='center'><FONT COLOR='blue'>PC</FONT></TD> <TD ALIGN='center'><FONT COLOR='blue'>DES</FONT></TD> <TD ALIGN='center'><FONT COLOR='blue'>SOLUCIONADO</FONT></TD> <?php $bd='alumnos'; $tabla='incidencias'; echo "<H2 align=center> Tabla: $tabla. Ordenado por aula,pc,fecha,hora <hr></H2>"; echo "</center>"; //Establecimiento de la conexión $conex = mysql_connect("localhost", "root", "miclave") or die("NO se pudo realizar la conexión"); // Selección de la base de datos mysql_select_db($bd, $conex); //Preparación y ejecución de la consulta $cons = "SELECT cod, fecha,hora,profesor,aula,pc,des,solucionado FROM $tabla ORDER BY aula,pc,fecha,hora"; $resultado = mysql_query($cons,$conex); //Obtención del número de filas del resultado $Num_filas = mysql_num_rows($resultado); echo "Número de filas en el resultado: $Num_filas <BR><HR>\n"; //Obtención del número de atributos $Num_campos = mysql_num_fields($resultado); // echo "<table border=1 with=1"; //Recorrido del cursor de fila en fila while ($fila = mysql_fetch_row($resultado)) { echo "<TR>"; //Recorrido de los atributos de una fila for ($i = 0; $i < $Num_campos; $i++) echo "<TD> $fila[$i] </TD>"; echo "</TR>"; } // Liberamos los recursos de las consultas mysql_free_result($resultado); // Se cierra la conexion mysql_close($conex); $today = date("F j, Y, g:i a"); echo "$today"; echo "<hr>"; ?> </BODY> </HTML>
<!-- CREATE TABLE `incidencias` ( `cod` CHAR(5) NOT NULL AUTO_INCREMENT PRYMARY, `fecha` DATE NOT NULL, `hora` CHAR(5) NOT NULL, `profesor` VARCHAR(30) NOT NULL, `aula` TINYINT(15) NOT NULL, `pc` TINYINT(6) NOT NULL, `solucionado` CHAR(2) NOT NULL, `des` VARCHAR(50) NOT NULL ) COMMENT = 'Incidencias de los pcs'; INSERT INTO `incidencias` (`fecha`, `hora`, `profesor`, `aula`, `pc`, `solucionado`, `des`) VALUES ('2003-12-31', '20:30', 'Paco', '1', '1', 'S', 'PRUEBA'); --> <HTML> <HEAD> <TITLE>NUEVO</TITLE> <H1 ALIGN=CENTER>NUEVO</H1> <H2 ALIGN=CENTER>Tabla: Incidencias</H2> </HEAD> <BODY> <HR> <FORM ACTION="nuevo.php" METHOD="POST"> <TABLE> <TR> <TD ALIGN=RIGHT>Fecha: (ejemplo: 2003-12-31)</TD> <TD><INPUT TYPE="DATE" NAME="fecha" VALUE="2003-12-31" SIZE=10 MAXLENGTH=10 ></TD> </TR> <TR> <TD ALIGN=RIGHT>hora (ejemplo: 12:30 )</TD> <TD><INPUT TYPE="TEXT" NAME="hora" VALUE="12:30" SIZE=5 MAXLENGTH=5 ></TD> </TR> <TR> <TD ALIGN=RIGHT>Profesor:</TD> <TD><INPUT TYPE="TEXT" NAME="profesor" VALUE="PACO" SIZE=30 MAXLENGTH=30 ></TD> </TR> <TR> <TD ALIGN=RIGHT>Aula:</TD> <TD><INPUT TYPE="NUMBER" NAME="aula" VALUE=1 SIZE=3 MAXLENGTH=3></TD> </TR> <TR> <TD ALIGN=RIGHT>Pc:</TD> <TD><INPUT TYPE="NUMBER" NAME="pc" VALUE=1 SIZE=6 MAXLENGTH=6></TD> </TR> <TR> <TD ALIGN=RIGHT>Descripcion:</TD> <TD><INPUT TYPE="TEXT" NAME="des" VALUE="NO VA DISQUETERA" SIZE=50 MAXLENGTH=50></TD> </TR> <TR> <TD ALIGN=RIGHT>Solucionado (S/N) </TD> <TD><INPUT TYPE="TEXT" NAME="solucionado" VALUE="N" SIZE=1></TD> </TR> <TD><INPUT TYPE="Submit" VALUE="Enviar"></TD> <TD><INPUT TYPE="Reset" VALUE="Borrar"></TD> </TR> </TABLE> </FORM> </BODY> <HR> </HTML>
<H1>RESULTADO DE NUEVO</H1> <HR> <?php $tabla='incidencias'; $bd='alumnos'; echo "<H2>Tabla: $tabla</H2>"; $conex = mysql_connect("localhost", "root", "miclave") or die("NO se pudo realizar la conexión"); // Selección de la base de datos mysql_select_db($bd, $conex); $cons = "INSERT INTO $tabla (fecha,hora,profesor,aula,pc,solucionado,des) VALUES ('$fecha','$hora','$profesor','$aula','$pc','$solucionado','$des') "; $res1 = mysql_query($cons, $conex); echo "<br><b> $cons <br> \n"; echo " resultado: $res1 <br> \n"; if ($res1) echo "<BR>Tupla insertada <BR>"; echo mysql_errno() . ": " . mysql_error(); // Liberamos los recursos de las consultas //mysql_free_result($res); // Se cierra la conexion mysql_close($conex); ?> <BR> <HR> </BODY> </HTML>
<HTML> <HEAD> <TITLE>BORRAR</TITLE> </HEAD> <BODY> <H1 ALIGN=CENTER>BORRAR</H1> <H2 ALIGN=CENTER>Tabla: Incidencias</H2> <HR> <FORM ACTION="borrar.php" METHOD="POST"> <TABLE> <TR> <TD ALIGN=RIGHT>Codigo:</TD> <TD><INPUT TYPE="NUMBER" NAME="cod" SIZE=3></TD> </TR> <TR> <TD><INPUT TYPE="Submit" VALUE="Enviar"></TD> <TD><INPUT TYPE="Reset" VALUE="Borrar"></TD> </TR> </TABLE> </FORM> </BODY> <HR> </HTML>
<H1>RESULTADO DEL BORRADO</H1> <HR> <?php $tabla='incidencias'; $bd='alumnos'; //Establecimiento de la conexión $conex = mysql_connect("localhost", "root", "miclave") or die("NO se pudo realizar la conexión"); // Selección de la base de datos mysql_select_db($bd, $conex); $cons = "SELECT * from $tabla where cod='$cod' "; echo " cons: $cons <br> \n"; $res = mysql_query($cons, $conex); echo " resultado: $res <br> \n "; if (!$res) // No Existe el valor echo "ERROR: No existe el valor: $cod <br>\n"; else { $cons = "DELETE FROM $tabla WHERE cod = '$cod' ;"; $res1 = mysql_query($cons, $conex); echo "<br><b> $cons <br> \n"; echo " resultado: $res1 <br> \n"; if ($res1) echo "<BR>Tupla Borrada<BR>"; else echo mysql_errno() . ": " . mysql_error(); // Se cierra la conexion mysql_close($conex); } ?> <BR> <HR> </BODY> </HTML>
<HTML> <HEAD> <TITLE>NUEVO Incidencias</TITLE> <H1 ALIGN=CENTER>MODIFICAR Incidencias</H1> <H2 ALIGN=CENTER>Tabla: Incidencias</H2> </HEAD> <BODY> <HR> <FORM ACTION="MODIFICAR.php" METHOD="POST"> <TABLE> <TR> <TD ALIGN=RIGHT>Cod: (ejemplo: 1)</TD> <TD><INPUT TYPE="NUMBER" NAME="cod" VALUE="1" SIZE=10 MAXLENGTH=3 ></TD> </TR> <TR> <TD ALIGN=RIGHT>Fecha: (ejemplo: 2003-12-31)</TD> <TD><INPUT TYPE="DATE" NAME="fecha" VALUE="2003-12-31" SIZE=10 MAXLENGTH=10 ></TD> </TR> <TR> <TD ALIGN=RIGHT>hora (ejemplo: 12:30 )</TD> <TD><INPUT TYPE="TEXT" NAME="hora" VALUE="12:30" SIZE=5 MAXLENGTH=5 ></TD> </TR> <TR> <TD ALIGN=RIGHT>Profesor:</TD> <TD><INPUT TYPE="TEXT" NAME="profesor" VALUE="PACO" SIZE=30 MAXLENGTH=30 ></TD> </TR> <TR> <TD ALIGN=RIGHT>Aula:</TD> <TD><INPUT TYPE="NUMBER" NAME="aula" VALUE=1 SIZE=3 MAXLENGTH=3></TD> </TR> <TR> <TD ALIGN=RIGHT>Pc:</TD> <TD><INPUT TYPE="NUMBER" NAME="pc" VALUE=1 SIZE=6 MAXLENGTH=6></TD> </TR> <TR> <TD ALIGN=RIGHT>Descripcion:</TD> <TD><INPUT TYPE="TEXT" NAME="des" VALUE="NO VA DISQUETERA" SIZE=50 MAXLENGTH=50></TD> </TR> <TR> <TD ALIGN=RIGHT>Solucionado (S/N) </TD> <TD><INPUT TYPE="TEXT" NAME="solucionado" VALUE="N" SIZE=1></TD> </TR> <TD><INPUT TYPE="Submit" VALUE="Enviar"></TD> <TD><INPUT TYPE="Reset" VALUE="Borrar"></TD> </TR> </TABLE> </FORM> </BODY> <HR> </HTML>
<?php $tabla='incidencias'; $bd='alumnos'; //Establecimiento de la conexión $conex = mysql_connect("localhost", "root", "miclave") or die("NO se pudo realizar la conexión"); // Selección de la base de datos mysql_select_db($bd, $conex); $cons = "SELECT * from $tabla where cod='$cod' "; echo " cons: $cons <br> \n"; $res = mysql_query($cons, $conex); echo " resultado: $res <br> \n "; if ($res) // Encontrada { $cons = "UPDATE $tabla SET fecha='$fecha' , hora ='$hora' , profesor='$profesor' , aula='$aula' ,pc = '$pc' , solucionado='$solucionado', des='$des' where cod='$cod' "; $res = mysql_query($cons, $conex); echo "<br><b> $cons <br> \n"; echo "resultado: $res <br> \n"; if ($res) echo "<BR>Tupla modificada <BR>"; else echo mysql_errno() . ": " . mysql_error(); } else // Encontrada echo "ERROR: No existe el valor: '$cod' <br>\n"; // Liberamos los recursos de las consultas mysql_free_result($res); // Se cierra la conexion mysql_close($conex); ?> <BR> <HR> </BODY> </HTML>
<H1>RESULTADO DE BORRA TODOS</H1> <?php $tabla='incidencias'; $bd='alumnos'; echo "<h2> Tabla: $tabla </h2><HR>"; //Establecimiento de la conexión $conex = mysql_connect("localhost", "root", "miclave") or die("NO se pudo realizar la conexión"); // Selección de la base de datos mysql_select_db($bd, $conex); $cons = "DELETE from $tabla; "; echo " cons: $cons <br> \n"; $res = mysql_query($cons, $conex); echo " resultado: $res <br> \n "; // Se cierra la conexion mysql_close($conex); echo "Han sido borrados todas las entradas"; ?> <BR> <HR> </BODY> </HTML>
Mysql-navigator. Permite manipular las tablas y consultas en sql.
This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html mysql -split 0 -local_icons 1 -show_section_numbers -no_auto_link -no_navigation
The translation was initiated by paco on 2007-04-18