I am aware that this question has been asked many times before, but all solutions I tried out did not work for me.
So, I installed MySQL Workbench and server. I log into Workbench as root. In the toolbar I click on Server then Startup/Shutdown and there I click on the button Start Server. But whenever I do this, I get following log:
018-05-14 21:09:59 — Starting server…
2018-05-14 21:10:07 — Server start done.
2018-05-14 21:10:09 — Checking server status…
2018-05-14 21:10:09 — Trying to connect to MySQL…
2018-05-14 21:10:09 — Can’t connect to MySQL server on ‘localhost’ (10061) (2003)
2018-05-14 21:10:09 — Assuming server is not running
Addiotionally a popup appears which says:
Connect Error
Could not connect to MySQL: Can’t connect to MySQL server on ‘localhost’ (10061)(code 2003)
One solution I found suggested installing the server manually. So I went into cmd as admin and typed:
C:> "C:Program FilesMySQLMySQL Server 8.0binmysqld" --install
It gave following output:
Service successfully installed.
But in Workbench the Server is still stopped and when trying to start it like mentioned above the same logs with the same popup and error appears.
Another solution I found suggested installing MySQL Notifier and using it to start and stop the server and use it to manage monitored items. But quite frankly, once I restart workbench and try to log in as root, it wont even log in but give following pop up error:
Cannot Connect to Database Server
Your conection attempt failed for user ‘root’ from your host to server at localhost:3306:
Authentication plugin ‘catching sha2 password’ cannot be loaded: Das angegebene Modul wurde nicht gefunden.Please:
1 Check that mysql is running on server localhost
2 Check that mysql is running on port 3306 (note: 3306 is the default, but this can be changed)
3 Check the root has rights to connect to localhost from your adress (mysql rights define what clients can connect to the server from which machines)
4 Make sure you are both providing a password if needed and using the correct password for localhost connecting from the host adress you’re connecting from
So now this «Authentication plugin ‘catching sha2 password’ cannot be loaded:» looks suspicious and I tried looking that up. I found this solution, which requires me to log into MySQL from cmd, but when I type C:Program FilesMySQLMySQL Server 8.0bin>mysql -u root -p
and execute it, it asks for the password which I provide, but then it answers with
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
Now I hit a wall and I don’t know how to continue. The MySQL server still doesn’t work and I am desperate.
I did look up the web for a solution such as this very relevant post on SO, to no avail.
Here is the steps that I installed mysql for win 10 and attempts to start it:
- downloaded mysql 5.7.18 zip file and unzip it into my app folder;
- open «cmd» as admin and run «mysqld —install«, it shows «Service successfully installed.»
- run «net start mysql«, it shows:
The MySQL service is starting. The MySQL service could not be started. The service did not report an error. More help is available by typing NET HELPMSG 3534.
- Run «mysqld.exe —console«, it chunked out lines of messages like below:
2017-07-16T14:55:49.066437Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2017-07-16T14:55:49.077216Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled 2017-07-16T14:55:49.081191Z 0 [Note] mysqld.exe (mysqld 5.7.18) starting as process 15872 ... 2017-07-16T14:55:50.167310Z 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions 2017-07-16T14:55:50.167310Z 0 [Note] InnoDB: Uses event mutexes 2017-07-16T14:55:50.168434Z 0 [Note] InnoDB: _mm_lfence() and _mm_sfence() are used for memory barrier 2017-07-16T14:55:50.169398Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3 2017-07-16T14:55:50.195084Z 0 [Note] InnoDB: Number of pools: 1 2017-07-16T14:55:50.249204Z 0 [Note] InnoDB: Not using CPU crc32 instructions 2017-07-16T14:55:50.290217Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M 2017-07-16T14:55:50.296068Z 0 [Note] InnoDB: Completed initialization of buffer pool 2017-07-16T14:55:50.453825Z 0 [Note] InnoDB: Highest supported file format is Barracuda. 2017-07-16T14:55:50.813667Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables 2017-07-16T14:55:50.815630Z 0 [Note] InnoDB: Setting file '.ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... 2017-07-16T14:55:51.040444Z 0 [Note] InnoDB: File '.ibtmp1' size is now 12 MB. 2017-07-16T14:55:51.062121Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active. 2017-07-16T14:55:51.062590Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active. 2017-07-16T14:55:51.068603Z 0 [Note] InnoDB: Waiting for purge to start 2017-07-16T14:55:51.128491Z 0 [Note] InnoDB: 5.7.18 started; log sequence number 1210018 2017-07-16T14:55:51.132269Z 0 [Note] InnoDB: Loading buffer pool(s) from C:Usersjonatoptmysql-5.7.18-winx64dataib_buffer_pool 2017-07-16T14:55:51.133249Z 0 [Note] Plugin 'FEDERATED' is disabled. mysqld: Table 'mysql.plugin' doesn't exist 2017-07-16T14:55:51.165071Z 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 2017-07-16T14:55:51.233060Z 0 [Note] InnoDB: Buffer pool(s) load completed at 170716 10:55:51 2017-07-16T14:55:51.251567Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2017-07-16T14:55:51.267669Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key 2017-07-16T14:55:51.272001Z 0 [Note] Server hostname (bind-address): '*'; port: 3306 2017-07-16T14:55:51.274922Z 0 [Note] IPv6 is available. 2017-07-16T14:55:51.278873Z 0 [Note] - '::' resolves to '::'; 2017-07-16T14:55:51.281791Z 0 [Note] Server socket created on IP: '::'. 2017-07-16T14:55:51.308759Z 0 [Warning] Failed to open optimizer cost constant tables 2017-07-16T14:55:51.310583Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 2017-07-16T14:55:51.311554Z 0 [ERROR] Aborting 2017-07-16T14:55:51.312531Z 0 [Note] Binlog end 2017-07-16T14:55:51.314481Z 0 [Note] Shutting down plugin 'ngram' 2017-07-16T14:55:51.314481Z 0 [Note] Shutting down plugin 'partition' 2017-07-16T14:55:51.314481Z 0 [Note] Shutting down plugin 'BLACKHOLE' 2017-07-16T14:55:51.315463Z 0 [Note] Shutting down plugin 'ARCHIVE' 2017-07-16T14:55:51.315463Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA' 2017-07-16T14:55:51.316444Z 0 [Note] Shutting down plugin 'MRG_MYISAM' 2017-07-16T14:55:51.319389Z 0 [Note] Shutting down plugin 'MyISAM' .... 2017-07-16T14:55:52.615409Z 0 [Note] Shutting down plugin 'binlog' 2017-07-16T14:55:52.618322Z 0 [Note] mysqld.exe: Shutdown complete
asked Jul 16, 2017 at 15:14
2
In MySQL installation root folder (suppose it is c:mysql), create a text file, say mypass.txt and copy this line to it:
ALTER USER 'root'@'localhost' IDENTIFIED BY '<yourpassword>';
The run
mysqld --initialize
mysqld --init-file=c:/mysql/mypass.txt
And if you want to run MySQL as a Windows Service:
mysqld --install MySQLXY --defaults-file="c:/mysql/my.ini"
answered Jul 16, 2017 at 16:04
Allen KingAllen King
2,2924 gold badges31 silver badges49 bronze badges
I did look up the web for a solution such as this very relevant post on SO, to no avail.
Here is the steps that I installed mysql for win 10 and attempts to start it:
- downloaded mysql 5.7.18 zip file and unzip it into my app folder;
- open «cmd» as admin and run «mysqld —install«, it shows «Service successfully installed.»
- run «net start mysql«, it shows:
The MySQL service is starting. The MySQL service could not be started. The service did not report an error. More help is available by typing NET HELPMSG 3534.
- Run «mysqld.exe —console«, it chunked out lines of messages like below:
2017-07-16T14:55:49.066437Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2017-07-16T14:55:49.077216Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled 2017-07-16T14:55:49.081191Z 0 [Note] mysqld.exe (mysqld 5.7.18) starting as process 15872 ... 2017-07-16T14:55:50.167310Z 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions 2017-07-16T14:55:50.167310Z 0 [Note] InnoDB: Uses event mutexes 2017-07-16T14:55:50.168434Z 0 [Note] InnoDB: _mm_lfence() and _mm_sfence() are used for memory barrier 2017-07-16T14:55:50.169398Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3 2017-07-16T14:55:50.195084Z 0 [Note] InnoDB: Number of pools: 1 2017-07-16T14:55:50.249204Z 0 [Note] InnoDB: Not using CPU crc32 instructions 2017-07-16T14:55:50.290217Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M 2017-07-16T14:55:50.296068Z 0 [Note] InnoDB: Completed initialization of buffer pool 2017-07-16T14:55:50.453825Z 0 [Note] InnoDB: Highest supported file format is Barracuda. 2017-07-16T14:55:50.813667Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables 2017-07-16T14:55:50.815630Z 0 [Note] InnoDB: Setting file '.ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... 2017-07-16T14:55:51.040444Z 0 [Note] InnoDB: File '.ibtmp1' size is now 12 MB. 2017-07-16T14:55:51.062121Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active. 2017-07-16T14:55:51.062590Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active. 2017-07-16T14:55:51.068603Z 0 [Note] InnoDB: Waiting for purge to start 2017-07-16T14:55:51.128491Z 0 [Note] InnoDB: 5.7.18 started; log sequence number 1210018 2017-07-16T14:55:51.132269Z 0 [Note] InnoDB: Loading buffer pool(s) from C:Usersjonatoptmysql-5.7.18-winx64dataib_buffer_pool 2017-07-16T14:55:51.133249Z 0 [Note] Plugin 'FEDERATED' is disabled. mysqld: Table 'mysql.plugin' doesn't exist 2017-07-16T14:55:51.165071Z 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 2017-07-16T14:55:51.233060Z 0 [Note] InnoDB: Buffer pool(s) load completed at 170716 10:55:51 2017-07-16T14:55:51.251567Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2017-07-16T14:55:51.267669Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key 2017-07-16T14:55:51.272001Z 0 [Note] Server hostname (bind-address): '*'; port: 3306 2017-07-16T14:55:51.274922Z 0 [Note] IPv6 is available. 2017-07-16T14:55:51.278873Z 0 [Note] - '::' resolves to '::'; 2017-07-16T14:55:51.281791Z 0 [Note] Server socket created on IP: '::'. 2017-07-16T14:55:51.308759Z 0 [Warning] Failed to open optimizer cost constant tables 2017-07-16T14:55:51.310583Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 2017-07-16T14:55:51.311554Z 0 [ERROR] Aborting 2017-07-16T14:55:51.312531Z 0 [Note] Binlog end 2017-07-16T14:55:51.314481Z 0 [Note] Shutting down plugin 'ngram' 2017-07-16T14:55:51.314481Z 0 [Note] Shutting down plugin 'partition' 2017-07-16T14:55:51.314481Z 0 [Note] Shutting down plugin 'BLACKHOLE' 2017-07-16T14:55:51.315463Z 0 [Note] Shutting down plugin 'ARCHIVE' 2017-07-16T14:55:51.315463Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA' 2017-07-16T14:55:51.316444Z 0 [Note] Shutting down plugin 'MRG_MYISAM' 2017-07-16T14:55:51.319389Z 0 [Note] Shutting down plugin 'MyISAM' .... 2017-07-16T14:55:52.615409Z 0 [Note] Shutting down plugin 'binlog' 2017-07-16T14:55:52.618322Z 0 [Note] mysqld.exe: Shutdown complete
asked Jul 16, 2017 at 15:14
2
In MySQL installation root folder (suppose it is c:mysql), create a text file, say mypass.txt and copy this line to it:
ALTER USER 'root'@'localhost' IDENTIFIED BY '<yourpassword>';
The run
mysqld --initialize
mysqld --init-file=c:/mysql/mypass.txt
And if you want to run MySQL as a Windows Service:
mysqld --install MySQLXY --defaults-file="c:/mysql/my.ini"
answered Jul 16, 2017 at 16:04
Allen KingAllen King
2,2924 gold badges31 silver badges49 bronze badges
MySQL — система управления базами данных (СУБД) с открытым исходным кодом от компании Oracle. Она была разработана и оптимизирована специально для работы веб-приложений. MySQL является неотъемлемой частью таких веб-сервисов, как Facebook, Twitter, Wikipedia, YouTube и многих других.
Эта статья расскажет, как определять, с чем связаны частые ошибки на сервере MySQL, и устранять их.
Не удаётся подключиться к локальному серверу
Одной из распространённых ошибок подключения клиента к серверу является «ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)».
Эта ошибка означает, что на хосте не запущен сервер MySQL (mysqld
) или вы указали неправильное имя файла сокета Unix или порт TCP/IP при попытке подключения.
Убедитесь, что сервер работает. Проверьте процесс с именем mysqld
на хосте сервера, используя команды ps или grep, как показано ниже.
$ ps xa | grep mysqld | grep -v mysqld
Если эти команды не показывают выходных данных, то сервер БД не работает. Поэтому клиент не может подключиться к нему. Чтобы запустить сервер, выполните команду systemctl.
$ sudo systemctl start mysql #Debian/Ubuntu
$ sudo systemctl start mysqld #RHEL/CentOS/Fedora
Чтобы проверить состояние службы MySQL, используйте следующую команду:
$ sudo systemctl status mysql #Debian/Ubuntu
$ sudo systemctl status mysqld #RHEL/CentOS/Fedora
Если в результате выполнения команды произошла ошибка службы MySQL, вы можете попробовать перезапустить службу и ещё раз проверить её состояние.
$ sudo systemctl restart mysql
$ sudo systemctl status mysql
Если сервер работает (как показано) и вы по-прежнему видите эту ошибку, вам следует проверить, не заблокирован ли порт TCP/IP брандмауэром или любой другой службой блокировки портов.
Для поиска порта, который прослушивается сервером, используйте команду netstat
.
$ sudo netstat -tlpn | grep "mysql"
Ещё одна похожая и часто встречающаяся ошибка подключения — «(2003) Can’t connect to MySQL server on ‘server’ (10061)». Это означает, что в сетевом соединении было отказано.
Следует проверить, работает ли в системе сервер MySQL (смотрите выше) и на тот ли порт вы подключаетесь (как найти порт, можно посмотреть выше).
Похожие частые ошибки, с которыми вы можете столкнуться при попытке подключиться к серверу MySQL:
ERROR 2003: Cannot connect to MySQL server on 'host_name' (111)
ERROR 2002: Cannot connect to local MySQL server through socket '/tmp/mysql.sock' (111)
Ошибки запрета доступа в MySQL
В MySQL учётная запись (УЗ) определяется именем пользователя и клиентским хостом, с которого пользователь может подключиться. УЗ может также иметь данные для аутентификации (например, пароль).
Причин для запрета доступа может быть много. Одна из них связана с учётными записями MySQL, которые сервер разрешает использовать клиентским программам при подключении. Это означает, что имя пользователя, указанное в соединении, может не иметь прав доступа к базе данных.
В MySQL есть возможность создавать учётные записи, позволяющие пользователям клиентских программ подключаться к серверу и получать доступ к данным. Поэтому при ошибке доступа проверьте разрешение УЗ на подключение к серверу через клиентскую программу.
Увидеть разрешённые привилегии учётной записи можно, выполнив в консоли команду SHOW GRANTS
Входим в консоль (пример для Unix, для Windows консоль можно найти в стартовом меню):
В консоли вводим команду:
> SHOW GRANTS FOR 'tecmint'@'localhost';
Дать привилегии конкретному пользователю в БД по IP-адресу можно, используя следующие команды:
> grant all privileges on *.test_db to 'tecmint'@'192.168.0.100';
> flush privileges;
Ошибки запрещённого доступа могут также возникнуть из-за проблем с подключением к MySQL (см. выше).
Потеря соединения с сервером MySQL
С этой ошибкой можно столкнуться по одной из следующих причин:
- плохое сетевое соединение;
- истекло время ожидания соединения;
- размер BLOB больше, чем
max_allowed_packet
.
В первом случае убедитесь, что у вас стабильное сетевое подключение (особенно, если подключаетесь удалённо).
Если проблема с тайм-аутом соединения (особенно при первоначальном соединении MySQL с сервером), увеличьте значение параметра connect_timeout
.
В случае с размером BLOB нужно установить более высокое значение для max_allowed_packet
в файле конфигурации /etc/my.cnf
в разделах [mysqld]
или [client]
как показано ниже.
[mysqld]
connect_timeout=100
max_allowed_packet=500M
Если файл конфигурации недоступен, это значение можно установить с помощью следующей команды.
> SET GLOBAL connect_timeout=100;
> SET GLOBAL max_allowed_packet=524288000;
Слишком много подключений
Эта ошибка означает, что все доступные соединения используются клиентскими программами. Количество соединений (по умолчанию 151) контролируется системной переменной max_connections
. Устранить проблему можно, увеличив значение переменной в файле конфигурации /etc/my.cnf
.
[mysqld]
max_connections=1000
Недостаточно памяти
Если такая ошибка возникла, это может означать, что в MySQL недостаточно памяти для хранения всего результата запроса.
Сначала нужно убедиться, что запрос правильный. Если это так, то нужно выполнить одно из следующих действий:
- если клиент MySQL используется напрямую, запустите его с ключом
--quick switch
, чтобы отключить кешированные результаты; - если вы используете драйвер MyODBC, пользовательский интерфейс (UI) имеет расширенную вкладку с опциями. Отметьте галочкой «Do not cache result» (не кешировать результат).
Также может помочь MySQL Tuner. Это полезный скрипт, который подключается к работающему серверу MySQL и даёт рекомендации по настройке для более высокой производительности.
$ sudo apt-get install mysqltuner #Debian/Ubuntu
$ sudo yum install mysqltuner #RHEL/CentOS/Fedora
$ mysqltuner
MySQL продолжает «падать»
Если такая проблема возникает, необходимо выяснить, заключается она в сервере или в клиенте. Обратите внимание, что многие сбои сервера вызваны повреждёнными файлами данных или индексными файлами.
Вы можете проверить состояние сервера, чтобы определить, как долго он работал.
$ sudo systemctl status mysql #Debian/Ubuntu
$ sudo systemctl status mysqld #RHEL/CentOS/Fedora
Чтобы узнать время безотказной работы сервера, запустите команду mysqladmin
.
$ sudo mysqladmin version -p
Кроме того, можно остановить сервер, сделать отладку MySQL и снова запустить службу. Для отображения статистики процессов MySQL во время выполнения других процессов откройте окно командной строки и введите следующее:
$ sudo mysqladmin -i 5 status
Или
$ sudo mysqladmin -i 5 -r status
Заключение
Самое важное при диагностике — понять, что именно вызвало ошибку. Следующие шаги помогут вам в этом:
- Первый и самый важный шаг — просмотреть журналы MySQL, которые хранятся в каталоге
/var/log/mysql/
. Вы можете использовать утилиты командной строки вродеtail
для чтения файлов журнала. - Если служба MySQL не запускается, проверьте её состояние с помощью
systemctl
. Или используйте командуjournalctl
(с флагом-xe
) в systemd. - Вы также можете проверить файл системного журнала (например,
/var/log/messages
) на предмет обнаружения ошибок. - Попробуйте использовать такие инструменты, как Mytop, glances, top, ps или htop, чтобы проверить, какая программа использует весь ресурс процессора или блокирует машину. Они также помогут определить нехватку памяти, дискового пространства, файловых дескрипторов или какого-либо другого важного ресурса.
- Если проблема в каком-либо процессе, можно попытаться его принудительно остановить, а затем запустить (при необходимости).
- Если вы уверены, что проблемы именно на стороне сервера, можете выполнить команды:
mysqladmin -u root ping
илиmysqladmin -u root processlist
, чтобы получить от него ответ. - Если при подключении проблема не связана с сервером, проверьте, нормально ли работает клиент. Попробуйте получить какие-либо его выходные данные для устранения неполадок.
Перевод статьи «Useful Tips to Troubleshoot Common Errors in MySQL»
Я знаю, что этот вопрос задавали много раз раньше, но все решения, которые я пробовал, у меня не работали.
Итак, я установил MySQL Workbench и сервер. Я вхожу в Workbench как root. На панели инструментов я нажимаю Сервер, затем Запуск / выключение и там нажимаю кнопку Запустить сервер. Но всякий раз, когда я это делаю, я получаю следующий журнал:
018-05-14 21:09:59 — Starting server…
2018-05-14 21:10:07 — Server start done.
2018-05-14 21:10:09 — Checking server status…
2018-05-14 21:10:09 — Trying to connect to MySQL…
2018-05-14 21:10:09 — Can’t connect to MySQL server on ‘localhost’ (10061) (2003)
2018-05-14 21:10:09 — Assuming server is not running
Кроме того, появляется всплывающее окно, в котором говорится:
Connect Error
Could not connect to MySQL: Can’t connect to MySQL server on ‘localhost’ (10061)(code 2003)
Одно из найденных мной решений предполагало установку сервера вручную. Итак, я вошел в cmd как администратор и набрал:
C:> "C:Program FilesMySQLMySQL Server 8.0binmysqld" --install
Он дал следующий результат:
Service successfully installed.
Но в Workbench сервер по-прежнему остановлен, и при попытке его запуска, как указано выше, появляются те же журналы с тем же всплывающим окном и ошибкой.
Другое решение, которое я нашел, предлагало установить MySQL Notifier и использовать его для запуска и остановки сервера и использования его для управления отслеживаемыми элементами. Но, честно говоря, как только я перезапускаю рабочую среду и пытаюсь войти в систему как root, он даже не входит в систему, но выдает следующую всплывающую ошибку:
Cannot Connect to Database Server
Your conection attempt failed for user ‘root’ from your host to server at localhost:3306:
Authentication plugin ‘catching sha2 password’ cannot be loaded: Das angegebene Modul wurde nicht gefunden.Please:
1 Check that mysql is running on server localhost
2 Check that mysql is running on port 3306 (note: 3306 is the default, but this can be changed)
3 Check the root has rights to connect to localhost from your adress (mysql rights define what clients can connect to the server from which machines)
4 Make sure you are both providing a password if needed and using the correct password for localhost connecting from the host adress you’re connecting from
Итак, теперь этот «Плагин аутентификации» улавливает пароль sha2 «не может быть загружен:» выглядит подозрительно, и я попытался его найти. Я нашел это решение, который требует, чтобы я вошел в MySQL из cmd, но когда я набираю C:Program FilesMySQLMySQL Server 8.0bin>mysql -u root -p и выполняю его, он запрашивает пароль, который я предоставляю, но затем отвечает
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
Теперь я уперся в стену и не знаю, как продолжить. Сервер MySQL по-прежнему не работает, и я в отчаянии.
Я знаю, что этот вопрос задавался много раз, но все решения, которые я пробовал, не помогли мне.
Итак, я установил MySQL Workbench и сервер. Я вхожу в Workbench как root. На панели инструментов я нажимаю на » Сервер», затем » Запуск/завершение работы», и там я нажимаю кнопку » Запустить сервер». Но всякий раз, когда я это делаю, я получаю следующий журнал:
018-05-14 21:09:59 — Запуск сервера…
2018-05-14 21:10:07 — Начало работы сервера.
2018-05-14 21:10:09 — Проверка состояния сервера…
2018-05-14 21:10:09 — Попытка подключиться к MySQL…
2018-05-14 21:10:09 — Не удается подключиться к серверу MySQL на «localhost» (10061) (2003)
2018-05-14 21:10:09 — Предполагая, что сервер не запущен
Addiotionally появляется всплывающее окно, в котором говорится:
Ошибка подключения
Не удалось подключиться к MySQL: не удается подключиться к серверу MySQL на «localhost» (10061) (код 2003)
Одно из найденных решений предложило установить сервер вручную. Поэтому я вошел в cmd как admin и набрал:
C:> "C:Program FilesMySQLMySQL Server 8.0binmysqld" --install
Он дал следующий результат:
Сервис успешно установлен.
Но в Workbench Server все еще остановлен, и при попытке запустить его, как упоминалось выше, появляются одни и те же журналы с тем же всплывающим окном и ошибкой.
Другое решение, которое я нашел, предлагало установить MySQL Notifier и использовать его для запуска и остановки сервера и использования его для управления контролируемыми элементами. Но, честно говоря, как только я перезапущу workbench и попытаюсь войти в систему под именем root, он даже не войдет в систему, но даст следующую всплывающую ошибку:
Не удается подключиться к серверу базы данных
Ваша попытка подключения не удалась для пользователя «root» с вашего хоста на сервер на localhost: 3306:
Невозможно загрузить плагин проверки подлинности ‘catching sha2 password’: Das angegebene Modul wurde nicht gefunden.Пожалуйста:
1 Убедитесь, что mysql запущен на сервере localhost
2 Убедитесь, что mysql запущен на порту 3306 (примечание: 3306 по умолчанию, но это можно изменить)
3 Проверьте, имеет ли root права подключиться к локальному хосту от вашего адреса (права mysql определяют, какие клиенты могут подключаться к серверу, с которого машины)
4 Убедитесь, что вы оба предоставляете пароль, если необходимо, и используете правильный пароль для подключения localhost от адреса узла, с которого вы подключаетесь.
Итак, теперь этот «плагин проверки подлинности» ловить пароль sha2 «не может быть загружен:» выглядит подозрительно, и я попытался разобраться в этом. Я нашел это решение, которое требует от меня входа в MySQL из cmd, но когда я C:Program FilesMySQLMySQL Server 8.0bin>mysql -u root -p
и выполняю его, он запрашивает пароль который я предоставляю, но затем он отвечает
ОШИБКА 1045 (28000): Доступ запрещен для пользователя ‘root’ @’localhost’ (с использованием пароля: YES)
Теперь я ударил стену, и я не знаю, как продолжить. Сервер MySQL по-прежнему не работает, и я в отчаянии.
Ранее я загрузил и установил сервер (продукт) СУБД «MySQL» версии 8.0 (бесплатной, со словом «Community» в названии) к себе на компьютер. Об этом у меня есть три поста: часть 1, часть 2, часть 3. Во время установки сервера этой СУБД (при его настройке) я выбрал способ работы с исполняемым файлом сервера «mysqld.exe» как с программой, которую нужно запускать и останавливать вручную.
Более популярной альтернативой такой настройки является способ запуска и останова сервера «mysqld.exe» как службы (service) «Windows» (этот способ тоже может быть запуском соответствующей службы вручную или автоматическим, при начале работы операционной системы). В данном посте речь пойдет о том, как настроить СУБД «MySQL» для работы в качестве службы «Windows».
Такая настройка может быть выполнена по-разному, в зависимости от того, в какой ситуации находится пользователь: СУБД уже установлена для работы не в качестве службы «Windows» (мой случай), СУБД еще не установлена.
1. СУБД «MySQL» уже установлена для работы НЕ службой «Windows»
В первую очередь я выполнил останов сервера «mysqld.exe», который у меня был запущен на данный момент как самостоятельная программа, а не как служба «Windows». Перед созданием запуска сервера в качестве службы «Windows» этот останов требуют сделать и в соответствующем разделе документации СУБД (про запуск и останов сервера как самостоятельной программы я писал в части 3 серии постов про установку этой СУБД).
Службы в операционных системах «Windows» можно создавать несколькими способами (например, с помощью командлета New-Service в языке «PowerShell» или с помощью утилиты «sc.exe»). Я выбрал способ, предоставляемый самим исполняемым файлом «mysqld.exe», с помощью параметра --install
(создание службы с автоматическим запуском) или с помощью параметра --install-manual
(создание службы с запуском вручную).
Важно: как я уже описывал ранее в другом посте, запускать сервер «mysqld.exe» следует от имени пользователя с административными правами, так как этот сервер пишет логи в папку C:ProgramDataMySQLMySQL Server 8.0Data
, для чего ему нужны административные права. По крайней мере, так это работает у меня в системе.
Запуск «mysqld.exe» только с этим параметром, например, такой (из программы-оболочки «PowerShell»):
(админ) PS C:Program FilesMySQLMySQL Server 8.0bin> .mysqld --install-manual
у меня сообщает в консоль, что «Service successfully installed.» (служба успешно установлена).
Действительно, служба с названием «MySQL» (это название службы, создаваемой вышеприведенной командой по умолчанию, но в этой команде можно указать другое название) успешно появляется в списке служб «Windows». Этот список можно открыть из диспетчера задач (этот диспетчер можно вызвать сочетанием клавиш «Ctrl+Shift+Esc»), на вкладке «Службы» внизу, щелкнув мышью по ссылке «Открыть службы» (если этот список уже открыт, то может потребоваться его обновить).
Вышеприведенная команда не запускает службу, а только добавляет (устанавливает) ее в список служб. Добавленную службу можно запустить из списка служб (это только один из ряда способов запустить службу).
Запуск службы «MySQL», добавленной вышеприведенной командой, у меня приводит к следующей ошибке («Служба «MySQL» на «Локальный компьютер» была запущена и затем остановлена. Некоторые службы автоматически останавливаются, если они не используются другими службами или программами.»):
Служба, очевидно, остается не запущенной. Эта ошибка может быть вызвана разными причинами. В данном случае причина в том, что команда добавления (установки) службы является неполной (см. пояснения и правильный вариант ниже).
Чтобы ввести более полную команду, я удалил службу из списка служб с помощью следующей команды (из программы-оболочки «PowerShell»):
(админ) PS C:Program FilesMySQLMySQL Server 8.0bin> .mysqld --remove
Эта команда одинакова хоть для службы, добавленной ранее с параметром --install
, хоть для службы, добавленной ранее с параметром --install-manual
. Если название службы отличается от умолчательного «MySQL», то его следует указать в команде. Эта команда при успешном удалении службы выдает в консоль сообщение «Service successfully removed.».
Правильно будет (для нашего случая) задать при запуске добавления (установки) службы параметр --defaults-file
с путем к файлу «my.ini», в котором содержатся настройки СУБД «MySQL», выполненные при установке этой СУБД программой-установщиком. Вот как у меня выглядит эта команда:
(админ) PS C:Program FilesMySQLMySQL Server 8.0bin> .mysqld --install-manual MySQL --defaults-file="C:ProgramDataMySQLMySQL Server 8.0my.ini"
Эта команда у меня срабатывает успешно, служба добавляется в список служб. После этого я выполнил запуск службы и он прошел удачно. Служба «MySQL» запустилась, процесс сервера «mysqld.exe» появился в списке процессов и я смог начать работать в программе-клиенте «mysql.exe».
В вышеприведенной команде отмечу два момента. Во-первых, порядок параметров важен. Если параметр --defaults-file
будет идти в команде раньше параметра --install-manual
, то будет произведена попытка запуска сервера СУБД, а не добавление (установка) службы в список служб. Во-вторых, важно обязательно указать название службы, даже если оно является умолчательным «MySQL», как в данном случае. Без этого у меня запуск вышеприведенной команды выдает ошибку и служба не добавляется в список служб.
Еще одно важное замечание. При добавлении (установке) службы в список служб имеет значение, от имени какой учетной записи операционной системы будет производиться вход в систему (запуск) данной службы. После добавления службы в список служб это можно посмотреть, открыв свойства данной службы. Вот как эти свойства выглядят у меня (вкладка «Вход в систему» окна свойств):
Под «системной учетной записью» у меня в данном случае подразумевается учетная запись «Локальная система», она же просто «СИСТЕМА».
Учетная запись, от имени которой запускается служба, должна обладать определенным набором прав и разрешений, иначе служба не будет запущена успешно. В нашем случае учетная запись должна обладать правом запуска служб, а также разрешением на запуск исполняемого файла «mysqld.exe», разрешением на полный доступ к папке логов и данных C:ProgramDataMySQLMySQL Server 8.0Data
, разрешением на чтение файла с настройками C:ProgramDataMySQLMySQL Server 8.0my.ini
(пути приведены для моего компьютера, вообще они могут отличаться от указанных).
Учетная запись «СИСТЕМА» обладает всеми нужными правами и разрешениями, поэтому в данном случае мне не пришлось заниматься настройкой этих прав и разрешений.
Перенастройка (Reconfigure). Я пытался выполнить перенастройку установленной у меня на компьютере СУБД «MySQL» через программу-установщик «MySQL Installer — Community». В программе-установщике есть такая возможность. Но на шаге перенастройки, касающемся запуска сервера СУБД как службы «Windows» после указания новых настроек не получается продвинуться дальше: кнопка «Next» остается неактивной. Если не пытаться выполнить эту перенастройку, а просто полностью удалить установку СУБД «MySQL» (вместе с папкой данных) через эту же программу-установщик, а затем установить СУБД «MySQL» заново, но теперь выбрав способ работы сервера СУБД в качестве службы «Windows» (с запуском вручную или с автоматическим запуском при запуске операционной системы), то всё получается успешно.
2. Установка СУБД «MySQL» для работы службой «Windows» изначально
Про установку этой СУБД я уже рассказывал подробно и пошагово ранее в трех постах (часть 1, часть 2, часть 3). Но там я на шаге выбора способа работы сервера «mysqld.exe» выбирал способ работы с сервером как с самостоятельной программой, а не в качестве службы «Windows». Теперь вернемся к установке СУБД «MySQL», но на этом шаге выберем вариант работы в качестве службы «Windows»:
Как видно на иллюстрации выше, теперь я оставил установленной галку «Configure MySQL Server as a Windows Service» (в прошлый раз я ее снимал).
Также я снял галку «Start the MySQL Server at System Startup»; это значит, что служба, добавляемая в список служб, будет с запуском вручную (если эту галку оставить установленной, то служба будет с автоматическим запуском при запуске операционной системы). Мне не нужно, чтобы процесс сервера «mysqld.exe» постоянно болтался запущенным в списке процессов, отъедая ресурсы моего компьютера. Я устанавливаю СУБД «MySQL» для изучения и экспериментов, а не для постоянной работы (production).
В первой половине этого поста я показывал, как добавить службу с названием «MySQL» (название по умолчанию) в список служб. В данном случае программа-установщик, как видно на иллюстрации выше, предлагает назвать службу «MySQL80». Ничего не имею против, я оставил эту настройку как есть.
Как видно на иллюстрации выше, я оставил учетную запись, от имени которой будет запускаться наша служба, по умолчанию: «Standard System Account». В соответствующем разделе документации СУБД, однако, сказано, что в данном случае под этой фразой подразумевается учетная запись «Network Service» (у меня в компьютере имя этой учетной записи написано большими буквами: «NETWORK SERVICE», еще ее называют «Сетевой службой»), цитата:
When Standard System Account is selected (default), the service logs on as Network Service.
Установку СУБД «MySQL» я закончил успешно (остальные шаги установки и настройки выполняются так же, как было описано в предыдущих постах). Служба «MySQL80» (с запуском вручную) запускается и останавливается успешно, можно работать с сервером СУБД.
Вот как выглядит вкладка «Вход в систему» окна свойств службы «MySQL80», добавленной программой-установщиком в список служб:
На иллюстрации выше видно, что выбрана учетная запись «Сетевая служба», о чем было сказано ранее. Этот пароль я не вводил, в этом окне всё настроено программой-установщиком. Учетная запись «NETWORK SERVICE» получила полный доступ к папке данных (это тоже настроено программой-установщиком).