Anshlag - калужское объединение друзей - туристов. Отдых, путешествия, туризм.

Anshlag - калужское объединение друзей - туристов. Отдых и путешествия по Карелии, туризм, водные походы. Отчеты о походах, рассказы туристов, новости туризма. Форум, гостевая, походные фотографии.



  
 Пятница, 19 июля 2019, 07:34:24 

Добавление новых пользователей в MySQL
Добавление новых пользователей в MySQL

Быстрый переход ...

» Добавление новых по...

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> scripts/mysql_install_db
shell> chown -R root  /usr/local/mysql
shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &
or
shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &
if you are running MySQL 4.x.


Добавление новых пользователей в MySQL

Пользователей можно добавлять двумя различными способами - при помощи команды GRANT или напрямую в таблицы назначения привилегий MySQL. Предпочтительнее использовать команду GRANT - этот способ проще и дает меньше ошибок. See section 4.3.1 Синтаксис команд GRANT и REVOKE.

Существует также большое количество программ (таких как phpmyadmin), которые служат для создания и администрирования пользователей. @xref{Portals}.

В приведенных ниже примерах демонстрируется, как использовать клиент mysql для задания новых пользователей. В примерах предполагается, что привилегии установлены в соответствии с принятыми по умолчанию значениями, описанными в предыдущем разделе. Это означает, что для внесения изменений на том же компьютере, где запущен mysqld, необходимо подсоединиться к серверу как пользователь MySQL root, и у пользователя root должна быть привилегия INSERT для базы данных mysql, а также административная привилегия RELOAD. Кроме того, если был изменен пароль пользователя root, его необходимо указать здесь для команды mysql.

Новых пользователей можно добавлять, используя команду GRANT:

shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
    ->    IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
        -> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;

Эти команды GRANT создают трех новых пользователей:

monty
    Полноценный суперпользователь - он может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль some_pass. Обратите внимание на то, что мы должны применить операторы GRANT как для monty@localhost, так и для monty@"%". Если не добавить запись с localhost, запись анонимного пользователя для localhost, которая создается при помощи mysql_install_db, будет иметь преимущество при подсоединении с локального компьютера, так как в ней указано более определенное значение для поля Host, и она расположена раньше в таблице user.
admin
    Пользователь, который может подсоединяться с localhost без пароля; ему назначены административные привилегии RELOAD и PROCESS. Эти привилегии позволяют пользователю запускать команды mysqladmin reload, mysqladmin refresh и mysqladmin flush-*, а также mysqladmin processlist. Ему не назначено никаких привилегий, относящихся к базам данных (их можно назначить позже, дополнительно применив оператор GRANT).
dummy
    Пользователь, который может подсоединяться к серверу без пароля, но только с локального компьютера. Все глобальные привилегии установлены в значение 'N'-тип привилегии USAGE, который позволяет создавать пользователей без привилегий. Предполагается, что относящиеся к базам данных привилегии будут назначены позже.


Установка и настройка Apache + Php + MySql на FreeBSD
Статья описывает способ быстрой инсталляции и настройки наиболее простого и часто используемого набора:
HTTP-сервер Apache, Интерпретатор php4, СУБД - MySql;
Пример конфигурации и установки для FreeBSD.

Необходимые пояснения:
Все пути относительны (вы можете выбрать и другие) а версии программ актуальны на момент написания статьи, если вы используете другие версии или устанавливаете программы по другим директориям, то будьте внимательны и корректируйте соответствующие команды и директивы.
Перед инсталляцией желательно проверить наличие (а если нет то установить) gcc, gmake, Perl5, p5-DBI p5-Mysql - все это можно установить из Packages или через ports (если есть выход в инет)

В первую очередь необходимо скачать исходные файлы (или где нибудь взять):
Apache-v 1.3.12
MySQL-v 3.22.32
PHP- v 4.0

Создадим временную директорию


shell> mkdir /var/src/distfiles

cкопируем туда полученные файлы


shell> cp apache_1.3.12.tar.gz /var/src/distfiles
shell> cp mysql-3.22.32.tar.gz /var/src/distfiles
shell> cp php-4.0.0.tar.gz /var/src/distfiled

разархивируем все эти файлы


shell> tar -xzvf apache_1.3.12.tar.gz
shell> tar -xzvf mysql-3.22.32.tar.gz
shell> tar -xzvf php-4.0.0.tar.gz

В первую очередь установим MySql
Перейдем в каталог


shell>cd /var/src/distfiles/mysql-3.22.32

Далее запустим скрипт конфигурации


shell> ./configure  --with-charset=koi8_ru --prefix=/usr/local/mysql

ну и компильнем


shell> ./make && make install

если все нормально, тогда идем далее


shell> ./script/mysql_install_db

Проверим директоию /usr/local/etc/rc.d
В ней должен получиться файлик mysql-server.sh
Примерно следующего содержания



#!/bin/sh
#
if [ -x /usr/local/bin/safe_mysqld ]
then
/usr/local/bin/safe_mysqld -user=mysql > /dev/null & && echo - n 'mysql'
fi

Перегрузимся


shell> reboot

После перезагрузки проверьте присутствует ли процесс в памяти



shell> ps -a|grep mysql

После этого сделаем проверочку


shell> mysqlshow
Должно появиться что-то типа


+---------------+
| Databases    |
+---------------+
|mysql          |
|test          | 
+---------------+

Установка сервера MySQL (операционная система Unix FreeBSD-2.2.7). Копируем с http://www.mysql.com/ файл mysql-3_22_32_tar.gz. Далее выполняем команды:
$ gunzip mysql-3_22_32_tar.gz
$ tar xvf mysql-3_22_32_tar
$ cd mysql-3.22.32
$ ./configure –with-mit-threads
$ make
$ make install
$ scripts/mysql_install_db
Запускаем сервер mysql:
$ /usr/local/bin/safe_mysqld &
Меняем пароль например на “123456”
$ /usr/local/mysql/bin/mysqladmin -u root password 123456
Рассмотрим пример создания двух пользователей. Однако работать будем с последним. Первый – alex, который может получить доступ к серверу MySQL, установленному на машине cel.tup, только с клиентской машины ikc1.tup. Он должен иметь привилегии на выборку, внесение изменений в базу данных ism. Второй пользователь – admin, имеющий доступ к серверу MySQL (host - cel.tup) также только с машины ikc1.tup, но все возможные привилегии при работе со всеми базами данных.
Для предоставления прав доступа СУБД MySQL имеет специальную базу данных mysql с тремя таблицами. Поскольку для создания вышеупомянутых пользователей потребуется только две таблицы, распечатаем их содержимое с помощью команды mysqlshow:
$ mysqlshow -u root -p mysql user
Enter password:
Database: mysql  Table: user  Rows: 6
+-----------------+---------------+------+-----+---------+-------+
| Field          | Type          | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+-------+
| Host            | char(60)      |      | PRI |        |      |
| User            | char(16)      |      | PRI |        |      |
| Password        | char(16)      |      |    |        |      |
| Select_priv    | enum('N','Y') |      |    | N      |      |
| Insert_priv    | enum('N','Y') |      |    | N      |      |
| Update_priv    | enum('N','Y') |      |    | N      |      |
| Delete_priv    | enum('N','Y') |      |    | N      |      |
| Create_priv    | enum('N','Y') |      |    | N      |      |
| Drop_priv      | enum('N','Y') |      |    | N      |      |
| Reload_priv    | enum('N','Y') |      |    | N      |      |
| Shutdown_priv  | enum('N','Y') |      |    | N      |      |
| Process_priv    | enum('N','Y') |      |    | N      |      |
| File_priv      | enum('N','Y') |      |    | N      |      |
| Grant_priv      | enum('N','Y') |      |    | N      |      |
| References_priv | enum('N','Y') |      |    | N      |      |
| Index_priv      | enum('N','Y') |      |    | N      |      |
| Alter_priv      | enum('N','Y') |      |    | N      |      |
+-----------------+---------------+------+-----+---------+-------+
$ mysqlshow -u root -p mysql db
Enter password:
Database: mysql  Table: db  Rows: 2
+-----------------+---------------+------+-----+---------+-------+
| Field          | Type          | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+-------+
| Host            | char(60)      |      | PRI |        |      |
| Db              | char(32)      |      | PRI |        |      |
| User            | char(16)      |      | PRI |        |      |
| Select_priv    | enum('N','Y') |      |    | N      |      |
| Insert_priv    | enum('N','Y') |      |    | N      |      |
| Update_priv    | enum('N','Y') |      |    | N      |      |
| Delete_priv    | enum('N','Y') |      |    | N      |      |
| Create_priv    | enum('N','Y') |      |    | N      |      |
| Drop_priv      | enum('N','Y') |      |    | N      |      |
| Grant_priv      | enum('N','Y') |      |    | N      |      |
| References_priv | enum('N','Y') |      |    | N      |      |
| Index_priv      | enum('N','Y') |      |    | N      |      |
| Alter_priv      | enum('N','Y') |      |    | N      |      |
+-----------------+---------------+------+-----+---------+-------+
Для добавления пользователей введем команды:
> mysql -u root -p
Enter password:
mysql> use mysql;
mysql> insert into user values ('ikc1.tup','alex',password('alex317'),
    -> 'n','n','n','n','n','n','n','n','n','n','n','n','n','n');
mysql> insert into user values ('ikc1.tup','admin',password('admin317'),
    -> 'y','y','y','y','y','y','y','y','y','y','y','y','y','y');
mysql> insert into db values ('ikc1.tup','ism','alex',
    -> 'y','y','n','n','n','n','n','n','n','n');
mysql> quit
После внесенных изменений в базу данных прав пользователей необходимо перегрузить сервер MySQL:
$  mysqladmin -u root -p reload
Enter password:
$
В качестве примера рассмотрим создание простой базы данных в которой содержатся записи  с информацией о сотрудниках университета. Ввод в базу данных, ее корректировка должны проводиться с компьютера клиента через формы броузера, например Netscape Communicator.
Создаем базу данных ism и таблицу в ней teacher:
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 3.22.32

Type 'help' for help.
mysql> create database ism;
Query OK, 1 row affected (0.04 sec)
mysql> use ism1;
Database changed
mysql> create table teacher (user_name VARCHAR(25), phone VARCHAR(10),
    -> job BLOB, img VARCHAR(20));
Query OK, 0 rows affected (0.02 sec)
mysql> quit
Bye
$
Ниже приведен файл index.html который формирует меню режимов работы с базой данных:
Menu
1.Добавить запись в базу данных

2.Найти запись по Ф.И.О.

3.Удалить запись

4.Отредактировать запись


Для каждого из представленных здесь пунктов меню должны быть созданы формы на языке html, обеспечивающих передачу данных web-серверу посредством скриптов, написанных на PHP.
Первая форма и скрипт предназначены для добавления записей в базу данных сервера MySQL.
Файл form1.html:
form1

Введите Ваше имя:




Введите номер Вашего телефона:



Введите краткую характеристику:




Введите имя фото лат.буквами:






Файл form1.php:
/* Определяем значения переменным */
$hostname="cel.tup"; $username="alex"; $password="alex317";
/* Имя базы данных */
$dbName="ism";
/* Таблица MySQL */
$usertable="teacher";
/* Создать соединение */
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу подсоединиться");
/* Выбор БД */
MYSQL_SELECT_DB($dbName) or die("Не могу выбрать БД");
/* Введение информации в БД */
$query="INSERT INTO $usertable VALUES ('$user_name','$phone','$job','$img')";
$result=MYSQL_QUERY($query);
/* Закрыть соединение */
MYSQL_CLOSE();
print "Запись введена в БД!
";  print "Назад в меню";
?>
Необходимо заметить, что в базе данных ism хранятся только имена фотографий сотрудников, сами фотографии находятся в подкаталоге pics.
Вторая форма и скрипт предназначены для выборки записей из базы данных сервера MySQL.
Файл form2.html:
Выборка данных
Введите Ф.И.О.


Файл form2.php:
$hostname="cel.tup"; $username="admin"; $password="admin317"; $dbName="ism";
$usertable="teacher";
mysql_connect($hostname,$username,$password) or die("No connect");
mysql_select_db("$dbName") or die("No select DB");
/* Выбрать сотрудников, имена которых начинаются на $user_name */
$query="select * from teacher where user_name like '$user_name%'";
$result=mysql_query($query);
/* Сколько нашлось таких сотрудников? */
$number=mysql_numrows($result);
/* Распечатка выбранных сотрудников */
$i=0;
if ($number == 0)
{ print "Нет данных о $user_name в БД
"; }
elseif ($number > 0)
{
while ($i < $number)
{
/* Присвоение переменным значений полей user_name, phone, job, img для i-й строки */
$user_name=mysql_result($result,$i,"user_name");
$phone=mysql_result($result,$i,"phone");
$job=mysql_result($result,$i,"job");
$img=mysql_result($result,$i,"img");
/* Вывод фотографии i-го сотрудника  высотой 130 пикселей */
print "

";
/* Вывод Ф.И.О. i-го сотрудника */
print " Ф.И.О.:
";
print "$user_name

";
/* Вывод телефона i-го сотрудника */
print " Телефон:
";
print "$phone

";
/* Вывод краткой характеристики i-го сотрудника */
print " Характеристика:
";
print "$job
";
$i++;
print "
";
}
}
print "Назад в меню";
?>
Третья форма и скрипт предназначены для  удаления записей из базы данных сервера MySQL.
Файл form3.html:
Выборка данных
Введите Ф.И.О. для удаления:


Файл form3.php:
$hostname="cel.tup"; $username="admin"; $password="admin317"; $dbName="ism";
$usertable="teacher";
mysql_connect($hostname,$username,$password) or die("No connect");
mysql_select_db("$dbName") or die("No select DB");
/* Удаление записи для поля user_name */
$query="delete from $usertable where user_name='$user_name'";
$result=mysql_query($query);
print "Запись удалена
";
print "Назад в меню";
?>

Четвертая форма и скрипт предназначены для  редактирования записей в базе данных сервера MySQL.
Файл form4.html:
Корректировка данных

Введите Ф.И.О., данные для которой необходимо изменить:



Файл form4.php:
$hostname="cel.tup"; $username="admin"; $password="admin317"; $dbName="ism"; $usertable="teacher";
mysql_connect($hostname,$username,$password) or die("No connect");
mysql_select_db("$dbName") or die("No select DB");
/* Выбор записей по полю user_name */
$query="select * from $usertable where user_name='$user_name'";
$result=mysql_query($query);
/* Определение существованя выбранных записей */
$number=mysql_numrows($result);
if ($number==0)
{
print "Нет такой записи!
";
print "Назад в меню";
}
/* Если запись выбрана из базы данных, вывести все ее поля в форму для редактирования */
/* И удалить выбранную запись */
else
{
/* Присвоение переменным значений полей для выбранной записи */
$phone=mysql_result($result,0,"phone");
$job=mysql_result($result,0,"job");
$img=mysql_result($result,0,"img");
print "
";
/* Удаление записи */
$query="delete from $usertable where user_name='$user_name'";
$result=mysql_query($query);
/* Создание формы для редактирования */
print "
";
print "
Введите Ваше имя:";
print "
";
print "

Введите номер Вашего телефона:";
print "
";
print "

Введите краткую характеристику:";
print "
";
print "

Введите имя фото лат.буквами:";
print "
";
print "

";
print "";
}
?>
Файл form5.php. Предназначен для ввода в базу данных в форме отредактированной записи.
/* Определяем значения переменным */
$hostname="cel.tup"; $username="admin"; $password="admin317";
/* Имя базы данных */
$dbName="ism";
/* Таблица MySQL */
$usertable="teacher";
/* Создать соединение */
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу подсоединиться");
/* Выбор БД */
MYSQL_SELECT_DB($dbName) or die("Не могу выбрать БД");
/* Введение информации в БД */
$query="INSERT INTO $usertable VALUES ('$user_name','$phone','$job','$img')";
$result=MYSQL_QUERY($query);
/* Закрыть соединение */
MYSQL_CLOSE();
print "Запись введена в БД!
"; print "Назад в меню";
?>
Рассмотренный здесь подход для создания и работы с простейшей базой данных применим и для построения достаточно сложных баз данных, содержащих большое количество полей и условий выборки по ним. Например, задачи о учете, перемещении кадров на крупных предприятиях, имеющих филиалы. Для таких задач размеры приведенных здесь программ увеличаться из-за необходимости обработки большого количества полей, введения логических условий при выборке данных, организации форматированного вывода.



Прокомментировать
Хотите оставить свои комментарии? Зарегистрируйтесь на нашем сайте!

 
(c) Anshlag 2002 - 2008