sudo mysql -u root
mysql> use mysql;
mysql> update user set plugin='mysql_native_password' where User='root';
mysql> set password = password('_new_root_password_');
[mysql] flush privileges;
check:
mysql -u root -p
enter new root password
Показаны сообщения с ярлыком mysql. Показать все сообщения
Показаны сообщения с ярлыком mysql. Показать все сообщения
понедельник, 1 октября 2018 г.
среда, 22 августа 2018 г.
Recreate mysql data dir
Recreate mysql data dir (without backup)
systemctl stop mysql
(rm -r /var/lib/mysql)
mkdir /var/lib/mysql
chown mysql. /var/lib/mysql
mysqld --initialize
You can find password for root in /var/log/mysql/error.log
~A temporary password is generated for root@localhost: xxxxxxxx~
mysql -u root -p
systemctl start mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
systemctl stop mysql
(rm -r /var/lib/mysql)
mkdir /var/lib/mysql
chown mysql. /var/lib/mysql
mysqld --initialize
You can find password for root in /var/log/mysql/error.log
~A temporary password is generated for root@localhost: xxxxxxxx~
mysql -u root -p
systemctl start mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
понедельник, 22 января 2018 г.
Mysql copy database
sudo apt-get install mysql-utilities
mysqldbcopy \
--source=root:your_password@localhost \
--destination=root:your_password@localhost \
sitedb1:sitedb2
or
mysqldump db_name | mysql new_db_name
mysqldbcopy \
--source=root:your_password@localhost \
--destination=root:your_password@localhost \
sitedb1:sitedb2
or
mysqldump db_name | mysql new_db_name
среда, 17 января 2018 г.
Mysql and new location for data with Errcode: 13 - Permission denied
For new instance data dir:
mysqld --initialize
mysqld: Can't create directory '/xxxx/mysql/' (Errcode: 13 - Permission denied)
add to file /etc/apparmor.d/ usr.sbin.mysqld new location
# Allow data dir access
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/xxxx/mysql/ r, /xxxx/mysq/** rwk,
and reload apparmor
service apparmor reload
other way
apt install appamor-utils
aa-disable /usr/sbin/mysqld
Disabling /usr/sbin/mysqld.
mysqld --initialize
You can find password for root in /var/log/mysql/error.log
A temporary password is generated for root@localhost: xxxxxxxx
пятница, 5 июня 2015 г.
MySQL и GUI
если надо локальный gui для mysql, можно использовать - emma
sudo aptitude install emma
следует только отметить, что запускается она командой с большой буквы - т.е. Emma
sudo aptitude install emma
следует только отметить, что запускается она командой с большой буквы - т.е. Emma
понедельник, 8 октября 2012 г.
Ejabberd и mysql
Настройка для mysql
** Качаем схему (схема есть в /usr/share/doc/ejabberd/examples/mysql.sql.gz)
wget https://git.process-one.net/ejabberd/mainline/blobs/raw/2.1.x/src/odbc/mysql.sql
** Создаём пользователя ejabberd:
$ mysql -p -u root
mysql> GRANT ALL ON ejabberd.* TO 'ejabberd'@'localhost' IDENTIFIED BY 'password';
пароль ставим свой
** Создаём базу данных ejabberd:
mysql> CREATE DATABASE ejabberd;
mysql> quit
** Загружаем схему в БД:
$ mysql -D ejabberd -p -u ejabberd < mysql.sql
** настраиваем ejabberd на MySQL, прописываем в ejabberd.cfg:
%%{auth_method, internal}.
{auth_method, odbc}.
{odbc_server, {mysql, "localhost", "ejabberd", "ejabberd", "password"}}.
пароль ставим свой
** Указываем какие таблицы будут храниться в MySQL.
Список всех таблиц, данные из которых можно перенести в MySQL можно узнать посмотрев какие модули odbc присутствуют:
ls /usr/lib/ejabberd/ebin | grep mod | grep odbc
mod_last_odbc.beam
mod_offline_odbc.beam
mod_privacy_odbc.beam
mod_private_odbc.beam
mod_pubsub_odbc.beam
mod_roster_odbc.beam
mod_vcard_odbc.beam
т.е. находим в конфиге строки вида {mod_last, []}, {mod_offline, []}, и меняем их на {mod_last_odbc, []}, {mod_offline_odbc, []}, в соответствии со списком найденых модулей
** скачиваем модули подключения erlang к MySQL -- https://support.process-one.net/doc/display/CONTRIBS/Yxa - не работала на момент установки - было довольно продолжительное время "The system is currently under maintenance. Please, come back in a while. Sorry for the inconvenience." или берем
svn co https://svn.process-one.net/ejabberd-modules/mysql/trunk mysql
Компилируем с помощью скрипта build.sh (для этого нужен полный erlang иначе будет сообщение вида "mysql Crash dump was written to: erl_crash.dump")
Из каталога ebin копируем файлы *.beam к остальным модулям (файлы с расширением *.beam). В Debian это /usr/lib/ejabberd/ebin/
Рестартим ejabberd, но при этом может остаться висеть процесс /usr/lib/erlang/erts-5.8/bin/beam и модуль для mysql не подхватиться - его надо убить и затем запустить ejabberd.
суббота, 22 сентября 2012 г.
Glassfish + Mysql - настройка
Размещаем в /opt/glassfish3
Запуск консоли админа /opt/glassfish3/bin/asadmin
Создаем домен командой
asadmin> create-domain _домен_
Отвечаем на вопросы.
полезное описание http://pgtk.edu.ru/gooamoko/doku.php?id=java_glassfish_quickstart
добавим в него JDBC-драйвера http://dev.mysql.com/downloads/connector/j/5.0.html
mysql-connector-java-5.1.20-bin.jar
Распаковываем и помещаем в /opt/glassfish3/glassfish/domains/_домен_/lib/ext
Запускаем домен
asadmin> start-domain
Идем браузером на порт 4848 и авторизуемся. Если получено что-то вроде "Secure Admin must be enabled to access the DAS remotely" - необходимо разрешить доступ
asadmin> enable-secure-admin
Enter admin user name> admin
Enter admin password for user "admin">
и перезапустить домен.
Слева в меню Common Tasks -> JDBC нужно создать пул подключений (Connection Pool), ответив на вопросы. 2 экрана - вводим имя пула, выбираем нужный драйвер, url, логин и пароль к базе
После создания пула, можно добавить ресурс, который будет ссылаться на этот пул подключений. Имя ресурса будет использоваться Java-приложением для работы с СУБД. (JDBC Resource)
Вводим имя ресурса, выбираем пул. По завершении можно проверить подключение к СУБД. Для этого нужно открыть для изменения параметров пул соединений и воспользоваться кнопкой «Ping»
Запуск консоли админа /opt/glassfish3/bin/asadmin
Создаем домен командой
asadmin> create-domain _домен_
Отвечаем на вопросы.
полезное описание http://pgtk.edu.ru/gooamoko/doku.php?id=java_glassfish_quickstart
добавим в него JDBC-драйвера http://dev.mysql.com/downloads/connector/j/5.0.html
mysql-connector-java-5.1.20-bin.jar
Распаковываем и помещаем в /opt/glassfish3/glassfish/domains/_домен_/lib/ext
Запускаем домен
asadmin> start-domain
Идем браузером на порт 4848 и авторизуемся. Если получено что-то вроде "Secure Admin must be enabled to access the DAS remotely" - необходимо разрешить доступ
asadmin> enable-secure-admin
Enter admin user name> admin
Enter admin password for user "admin">
и перезапустить домен.
Слева в меню Common Tasks -> JDBC нужно создать пул подключений (Connection Pool), ответив на вопросы. 2 экрана - вводим имя пула, выбираем нужный драйвер, url, логин и пароль к базе
После создания пула, можно добавить ресурс, который будет ссылаться на этот пул подключений. Имя ресурса будет использоваться Java-приложением для работы с СУБД. (JDBC Resource)
Вводим имя ресурса, выбираем пул. По завершении можно проверить подключение к СУБД. Для этого нужно открыть для изменения параметров пул соединений и воспользоваться кнопкой «Ping»
четверг, 19 июля 2012 г.
Java + Mysql + utf8 = вопросы вместо русских букв (??????)
Если при записи в базу получаем вместо русских букв знаки вопроса, добавляем в параметры подключение к JDBC
useUnicode=true
characterEncoding=utf8
Т.е. урл для подключения к базе должен представлять вид - jdbc:mysql://hostname:port/database?useUnicode=true&characterEncoding=utf8
и не лишним будет сразу после подключения к базе выполнить два "запроса"
stat.execute("set character set utf8");
stat.execute("set names utf8");
useUnicode=true
characterEncoding=utf8
Т.е. урл для подключения к базе должен представлять вид - jdbc:mysql://hostname:port/database?useUnicode=true&characterEncoding=utf8
и не лишним будет сразу после подключения к базе выполнить два "запроса"
stat.execute("set character set utf8");
stat.execute("set names utf8");
воскресенье, 25 марта 2012 г.
Java + Mysql
Драйвер JDBC для mysql качаем отсюда: http://dev.mysql.com/downloads/connector/j/
Далее в проекте в каталоге src создаем каталог lib и туда из архива с драйвером копируем
mysql-connector-java-x.x.xx-bin.jar (либо через импорт)
Затем надо подключить jar в classpath - самая обширная инструкция есть тут http://www.vogella.de/articles/Eclipse/article.html#classpath
В кратце - идем: (проект) Properties -> Java Build Path -> (вкладка) Libraries -> (кнопка) Add JARs, находим наш проект и каталог lib в нем mysql-connector-java-x.x.xx-bin.jar и Ок.
Примеров кода полно в инете, к примеру http://www.vogella.de/articles/MySQLJava/article.html
Из основного:
ну и забыть про try + catch не даст компилятор.
Далее в проекте в каталоге src создаем каталог lib и туда из архива с драйвером копируем
mysql-connector-java-x.x.xx-bin.jar (либо через импорт)
Затем надо подключить jar в classpath - самая обширная инструкция есть тут http://www.vogella.de/articles/Eclipse/article.html#classpath
В кратце - идем: (проект) Properties -> Java Build Path -> (вкладка) Libraries -> (кнопка) Add JARs, находим наш проект и каталог lib в нем mysql-connector-java-x.x.xx-bin.jar и Ок.
Примеров кода полно в инете, к примеру http://www.vogella.de/articles/MySQLJava/article.html
Из основного:
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager.getConnection("jdbc:mysql://localhost/?"
+ "user=sqluser&password=sqluserpw");
statement = connect.createStatement();
resultSet = statement.executeQuery("select * from ....");
while (resultSet.next()) {
...
String user = resultSet.getString("myuser");
Date date = resultSet.getDate("datum");
...
}
ну и забыть про try + catch не даст компилятор.
понедельник, 21 ноября 2011 г.
mysqldump и ошибка 1016
Если при выполнении дампа базы с помощью mysqldump получили ошибку вида:
mysqldump: Got error: 1016: Can’t open file: ‘.....’ (errno: 24) when using LOCK TABLES
можно попробовать добавить (увеличить) в /etc/my.cnf
open-files-limit=32000
mysqldump: Got error: 1016: Can’t open file: ‘.....’ (errno: 24) when using LOCK TABLES
можно попробовать добавить (увеличить) в /etc/my.cnf
open-files-limit=32000
суббота, 19 ноября 2011 г.
Mysql и несколько экземпляров на одном сервере.
Потребности в такой установке могут быть весьма различны, а вот этапы настройки вполне одинаковые.
Будем использовать mysqld_multi - программа для управления множеством серверов MySQL.
Для понимания процесса читаем доки.
http://dev.mysql.com/doc/refman/5.0/en/mysqld-multi.html
http://mysql.ru/docs/man/mysqld_multi.html
Создаем каталог для multi mysql, к примеру /var/lib/mysql_multi/
и в нем подкаталоги 01,02...nn
Выставим нужные права на них и собственника.
chmod 755 /var/lib/mysql_multi -R
chown mysql:mysql /var/lib/mysql_multi -R
Создадим в my.cnf нужные разделы (см. ссылки выше) со своими путями к файлам
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = multi_admin
password = multipass
к примеру для экземпляра #2
[mysqld2]
socket = /var/run/mysqld/mysqld2.sock
port = 3312
pid-file = /var/run/mysqld/mysqld2.pid
datadir = /var/lib/mysql_multi/02
language = /usr/share/mysql/english
user = mysql
** Перед запуском сервера mysql необходимо создать структуру в целевом каталоге:
mysql_install_db --user=mysql --datadir=/var/lib/mysql_multi/02
** Запуск нужного экземпляра сервера:
mysqld_multi start 2
** проверитм подключение:
mysql --socket=/var/run/mysqld/mysqld2.sock
или
mysql --host=127.0.0.1 --port=3312
НЕ ИСПОЛЬЗУЙТЕ "localhost" вместо "127.0.0.1"! Иначе вместо подключения к нужному порту будет задействован сокет по умолчанию. А это будет совсем не тот экземпляр сервера, который вы хотели.
** установим пароль рута:
mysqladmin --socket=/var/run/mysqld/mysqld2.sock -u root password 'new-password'
или
mysqladmin --host=127.0.0.1 --port=3312 -u root password 'new-password'
Так же создадим пользователя mulit_admin и права для выключения сервера mysql для всех экземпляров сервера:
GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
к примеру так:
echo "GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';" | mysql --host=127.0.0.1 --port=3312 -u root -p'password'
ну и соответственно в разделе my.cnf [mysqld_multi] надо внести те же значения
user = multi_admin
password = multipass
Собственно, пока все. Т.е. теперь запустить экземпляры сервера mysql можно командой
mysqld_multi start 2,4,5
остановить аналогично
mysqld_multi stop 2,4,5
Будем использовать mysqld_multi - программа для управления множеством серверов MySQL.
Для понимания процесса читаем доки.
http://dev.mysql.com/doc/refman/5.0/en/mysqld-multi.html
http://mysql.ru/docs/man/mysqld_multi.html
Создаем каталог для multi mysql, к примеру /var/lib/mysql_multi/
и в нем подкаталоги 01,02...nn
Выставим нужные права на них и собственника.
chmod 755 /var/lib/mysql_multi -R
chown mysql:mysql /var/lib/mysql_multi -R
Создадим в my.cnf нужные разделы (см. ссылки выше) со своими путями к файлам
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = multi_admin
password = multipass
к примеру для экземпляра #2
[mysqld2]
socket = /var/run/mysqld/mysqld2.sock
port = 3312
pid-file = /var/run/mysqld/mysqld2.pid
datadir = /var/lib/mysql_multi/02
language = /usr/share/mysql/english
user = mysql
** Перед запуском сервера mysql необходимо создать структуру в целевом каталоге:
mysql_install_db --user=mysql --datadir=/var/lib/mysql_multi/02
** Запуск нужного экземпляра сервера:
mysqld_multi start 2
** проверитм подключение:
mysql --socket=/var/run/mysqld/mysqld2.sock
или
mysql --host=127.0.0.1 --port=3312
НЕ ИСПОЛЬЗУЙТЕ "localhost" вместо "127.0.0.1"! Иначе вместо подключения к нужному порту будет задействован сокет по умолчанию. А это будет совсем не тот экземпляр сервера, который вы хотели.
** установим пароль рута:
mysqladmin --socket=/var/run/mysqld/mysqld2.sock -u root password 'new-password'
или
mysqladmin --host=127.0.0.1 --port=3312 -u root password 'new-password'
Так же создадим пользователя mulit_admin и права для выключения сервера mysql для всех экземпляров сервера:
GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
к примеру так:
echo "GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';" | mysql --host=127.0.0.1 --port=3312 -u root -p'password'
ну и соответственно в разделе my.cnf [mysqld_multi] надо внести те же значения
user = multi_admin
password = multipass
Собственно, пока все. Т.е. теперь запустить экземпляры сервера mysql можно командой
mysqld_multi start 2,4,5
остановить аналогично
mysqld_multi stop 2,4,5
вторник, 9 августа 2011 г.
Mysql и переезд на новый сервер
Понадобилось скопировать пользователей и их права на новый сервер
не плохо подошла для этого утилитка mk-show-grants из пакета Maatkit
http://www.maatkit.org
mk-show-grants --separate --revoke --ask-pass > users.sql
единственный неприятный момент, требуется пароль, а когда используется > users.sql вывод приглашения перенаправляется, т.е. надо вводит "вслепую" и enter
А потом из users.sql надо удалить первую строку - Enter password:
и на целевом сервере втянуть users.sql в базу
не плохо подошла для этого утилитка mk-show-grants из пакета Maatkit
http://www.maatkit.org
mk-show-grants --separate --revoke --ask-pass > users.sql
единственный неприятный момент, требуется пароль, а когда используется > users.sql вывод приглашения перенаправляется, т.е. надо вводит "вслепую" и enter
А потом из users.sql надо удалить первую строку - Enter password:
и на целевом сервере втянуть users.sql в базу
четверг, 16 июня 2011 г.
Mysql изменить пароль root
Имеем три способа:
1. -------------------------------------
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
2. -------------------------------------
mysqladmin -u root password "newpass"
3. -------------------------------------
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
1. -------------------------------------
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
2. -------------------------------------
mysqladmin -u root password "newpass"
3. -------------------------------------
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
вторник, 31 августа 2010 г.
Резервная копия mysql
Есть и более продвинутые средства, но когда надо быстро:
mysqldump -u "юзер" -p --opt "база" > "имя_файла"
запросит пароль и сбросит копию в "имя_фала".
Еще один момент, иногда надо целиком перекинуть базы, в том числе и создать их в новом месте, первый вариант не совсем подходит, можно запустить так:
mysqldump -u "юзер" -p -B "список баз" > "имя_файла"
Если вдруг получили при этом что-то вроде этого
mysqldump: Got error: 29: File .... not found (Errcode: 24) when using LOCK TABLES
(слишком много одновременно открываемых файлов)
Можно просто добавить опцию --single-transaction
mysqldump -u "юзер" -p --single-transaction -B "список баз" > "имя_файла"
mysqldump -u "юзер" -p --opt "база" > "имя_файла"
запросит пароль и сбросит копию в "имя_фала".
Еще один момент, иногда надо целиком перекинуть базы, в том числе и создать их в новом месте, первый вариант не совсем подходит, можно запустить так:
mysqldump -u "юзер" -p -B "список баз" > "имя_файла"
Если вдруг получили при этом что-то вроде этого
mysqldump: Got error: 29: File .... not found (Errcode: 24) when using LOCK TABLES
(слишком много одновременно открываемых файлов)
Можно просто добавить опцию --single-transaction
mysqldump -u "юзер" -p --single-transaction -B "список баз" > "имя_файла"
четверг, 12 августа 2010 г.
Сброс пароля root mysql
Сброс пароля пользователя root в mysql.
1. Останавливаем mysql.
2. Запускаем mysql следующей командой:
/usr/bin/mysqld_safe --skip-grant-tables --user=root &
3. Запускаем клиента mysql
mysql -u root
4. Выполняем sql запрос
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
где newpwd - новый пароль.
5. Применяем изменения
FLUSH PRIVILEGES;
6. Выходим из mysql клиента выполнив в нем команду exit
7. Перегружаем mysql сервер.
1. Останавливаем mysql.
2. Запускаем mysql следующей командой:
/usr/bin/mysqld_safe --skip-grant-tables --user=root &
3. Запускаем клиента mysql
mysql -u root
4. Выполняем sql запрос
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
где newpwd - новый пароль.
5. Применяем изменения
FLUSH PRIVILEGES;
6. Выходим из mysql клиента выполнив в нем команду exit
7. Перегружаем mysql сервер.
вторник, 29 сентября 2009 г.
Mysql и "битая" таблица
Если вдруг пропал доступ и в ошибки начало валиться - "Table 'xxxx' is marked as crashed and should be repaired" или "Checking for corrupt, not cleanly closed and upgrade needing tables" то надо копать в сторону mysqlcheck с ключом -r
mysqlcheck [OPTIONS] database [tables]
mysqlcheck -r -u _юзер_ -p _база_ _битая_таблица_
В итоге если случай не сильно запущенный, все будет хорошо.
Еще вариант
mysqlcheck --check-upgrade --all-databases --auto-repair -u root -p
mysql_upgrade --force -u root -p
mysqlcheck [OPTIONS] database [tables]
mysqlcheck -r -u _юзер_ -p _база_ _битая_таблица_
В итоге если случай не сильно запущенный, все будет хорошо.
Еще вариант
mysqlcheck --check-upgrade --all-databases --auto-repair -u root -p
mysql_upgrade --force -u root -p
понедельник, 29 июня 2009 г.
Создание новой базы в MySQL
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>
вводим пароль и база создана, теперь раздать на нее права, к примеру для traff
или в консоли mysql
CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql -u root -p
вводим пароль и получаем оболчку
mysql>
вводим
GRANT ALL PRIVILEGES ON new_base.* TO traff@localhost IDENTIFIED BY 'пароль';
Если при попытке создания новой базы вылезло
Can't create database 'database'. (errno: 13)'
значит или сменились права на каталог /var/lib/mysql или владелец - должен быть mysql:mysql
Подписаться на:
Сообщения (Atom)