Kirjoittaja Aihe: [ ratkaistu ] Mysql käynnistys, sammuttaminen ja salasanan vaihto  (Luettu 4917 kertaa)

teele

  • Käyttäjä
  • Viestejä: 809
    • Profiili
Kumpaa tapaa sammuttaa mysql pitäisi käyttää tai onko olemassa joku oikeampi tapa

Koodia: [Valitse]
sudo systemctl stop mysql.service

Koodia: [Valitse]
sudo /etc/init.d/mysql stop
Mysql rootin salasana on unohtunut ja nyt se pitäisi vaihtaa. Tätä varten mysql pitänee sammuttaa. Mutta mikä olisi paras tapa asettaa uusi rootin salasana tai tarvitaanko käyttäjää root ollenkaan, voisiko käyttjä olla yhtä hyvin muunkin niminen. Mysql on pilvikoneessa ja pilvikoneessa on Ubuntu 18.04.

Jos olen pilvikoneen päätteesä, siellä voinee testailla mysql:ää myös localhastina?
« Viimeksi muokattu: 01.07.20 - klo:18.40 kirjoittanut teele »

mrl586

  • Käyttäjä
  • Viestejä: 4638
    • Profiili
Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
« Vastaus #1 : 16.06.20 - klo:16.04 »
Ylempää tapaa suositellaan nykyään.

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
« Vastaus #2 : 16.06.20 - klo:16.45 »
Kumpaa tapaa sammuttaa mysql pitäisi käyttää tai onko olemassa joku oikeampi tapa

Koodia: [Valitse]
sudo systemctl stop mysql.service

Tuo on oikea tapa Ubuntu 16.04:stä lähtien.


Mysql rootin salasana on unohtunut ja nyt se pitäisi vaihtaa. Tätä varten mysql pitänee sammuttaa.

Joo, tähän tapaan:

Koodia: [Valitse]
sudo systemctl stop mysql.service
Koodia: [Valitse]
sudo mysqld_safe --skip-grant-tables --skip-networking &
Avaa sitten mysql:n komentokehote roottina:
Koodia: [Valitse]
mysql -u root

Aja siellä komennot:
Koodia: [Valitse]
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password  BY 'UusiSalasana';
FLUSH PRIVILEGES;
​exit

Sammuta manuaalisesti käynnistetty mysqld_safe:
Koodia: [Valitse]
mysqladmin -u root -p shutdown
Käynnistä mysql.service:
Koodia: [Valitse]
sudo systemctl start mysql.service

tai tarvitaanko käyttäjää root ollenkaan

No ei ehkä välttämättä, mutta silloin tietokannan hallinta on melko hankalaa. Eli jos jossain vaiheessa tarvitset lisää oikeuksia, tietokanta pitäisi sammuttaa ja käynnistää --skip-grant-tables -vivun kanssa, kuten tuossa unohtuneen salasanan tapauksessa.

root-tunnuksen voi halutessaan nimetä uudelleen tai myöntää jollekin toiselle tunnukselle vastaavat oikeudet.


Jos olen pilvikoneen päätteesä, siellä voinee testailla mysql:ää myös localhastina?

Joo. Oletuksena MySQL:n pitäisi yleensäkin kuunnella vain localhostin porttia 3306, ja hyvä niin. Ilman perusteltua syytä sitä ei kannata avata muille koneille, vaikka verkko olisi periaatteessa yksityinen ja suojattu.

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11433
    • Profiili
    • Tomin kotisivut
Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
« Vastaus #3 : 16.06.20 - klo:17.29 »
Uusimmissa Ubuntuissa oletuksena tietokannan rootiksi pääsee kirjautumaan root-käyttäjällä ilman salasanaa. Toki tuon voi ottaa halutessaan pois päältä.
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

teele

  • Käyttäjä
  • Viestejä: 809
    • Profiili
Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
« Vastaus #4 : 17.06.20 - klo:12.46 »

Tiedosto ehkä kateissa

Koodia: [Valitse]
pilvikone@ubuntu-2gb-hel1-1:/home/testailu$ sudo systemctl stop mysql.service
pilvikone@ubuntu-2gb-hel1-1:/home/testailu$ sudo mysqld_safe --skip-grant-tables --skip-networking &
[1] 12320
mysql -u root
pilvikone@ubuntu-2gb-hel1-1:/home/testailu$ 2020-06-17T09:15:58.376835Z mysqld_safe Logging to syslog.
2020-06-17T09:15:58.381938Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2020-06-17T09:15:58.387262Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
[1]+  Exit 1                  sudo mysqld_safe --skip-grant-tables --skip-networking

Kannattaisiko poistaa mysql kokonaan ja sitten yrittää uudestaan asennusta. Nettihakujen perusteella on monia mahdollisuuksia, miksi tällaisia virheitä tulee ja tämä on täysin ensimmäinen tietokantakokielu eli jokaista virheilmoitusta pitää hakea netistä. Ei nyt ole niitä onnistumisen kokemusksia juurikaan tullut  :(

Olisiko
Koodia: [Valitse]
sudo apt purge mysql
riittävä poisgtamaan vanhan mysql:n niin, että uusi voisi katsoa asentuvansa puhtaalle pilvikoneelle.

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
« Vastaus #5 : 17.06.20 - klo:13.09 »
020-06-17T09:15:58.387262Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

mysql-palvelu taitaa luoda kyseisen hakemiston lennossa ja poistaa sen sammuessaan. Luo hakemisto itse ennen kuin käynnistät mysqld_safen:

Koodia: [Valitse]
sudo mkdir /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld


Olisiko
Koodia: [Valitse]
sudo apt purge mysql
riittävä poisgtamaan vanhan mysql:n niin, että uusi voisi katsoa asentuvansa puhtaalle pilvikoneelle.

Paketti on mysql-server. Lisäksi voi joutua siivoamaan jäljelle jääneitä paketteja apt autoremovella:

Koodia: [Valitse]
sudo apt purge mysql-server
sudo apt autoremove --purge

Sitten levylle jää vielä MySQL:n tietokanta kaikkine käyttöoikeustietoineen. Sijaitsee hakemistossa /var/lib/mysql, jonka voi poistaa tai siirtää syrjään ennen uudelleenasennusta, jos siellä ei ole mitään säilytettävää dataa.
« Viimeksi muokattu: 17.06.20 - klo:13.12 kirjoittanut nm »

teele

  • Käyttäjä
  • Viestejä: 809
    • Profiili
Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
« Vastaus #6 : 17.06.20 - klo:13.21 »

Edistyy, mutta

Koodia: [Valitse]
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password  BY 'Salasana';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

eli tiedostojen luonti auttoi, mutta tauluoptioiden pois jättminen estää salasanan laittamista?

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
« Vastaus #7 : 17.06.20 - klo:14.15 »
Okei, onnistuuko tällä:

Koodia: [Valitse]
UPDATE mysql.user SET authentication_string=password('Salasana') WHERE user='root';

Tai ehkä se on vain read-only-tilassa: https://shengwenbai.github.io/2018/01/06/mysql8-access-denied/

Eli kokeile myös

Koodia: [Valitse]
set global read_only=0;
flush privileges;
Koodia: [Valitse]
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password  BY 'Salasana';
« Viimeksi muokattu: 17.06.20 - klo:14.19 kirjoittanut nm »

teele

  • Käyttäjä
  • Viestejä: 809
    • Profiili
Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
« Vastaus #8 : 01.07.20 - klo:13.52 »
Mysql jatkuu. On kuitenkin vielä epäselvää, onnistuiko rootin salasanan asettaminen vai ei. Ilmoitusten mukaan yhden rivin arvo on muuttunut, mutta varoitus viittaisi siihen, että jotakin on kuitenkin mennyt väärin.

Toinen alla olevasta päätetkestistä näkyvä asia on, että mysql-kehotteesta ei näytä pääsevän mitenkään pois. 

Koodia: [Valitse]
$ sudo systemctl stop mysql.service
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
[1] 3847
$ 2020-07-01T09:41:47.674873Z mysqld_safe Logging to syslog.
2020-07-01T09:41:47.678905Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2020-07-01T09:41:47.701035Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.30-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> UPDATE mysql.user SET authentication_string=password('rootinsalasana') WHERE user='root';
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> mysqladmin -u root -p shutdown
    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqladmin -u root -p shutdown' at line 1

mysql>  mysqld stop;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqld stop' at line 1
mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)

mysql> 2020-07-01T09:49:59.020312Z mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended



Kill- tai pkil-komentojen käyttäminen toisessa päätteessä ei ehkä ole ihan oikea ratkaisu?

Voisiko varoitus koskea sitä, että salasanaa on aiottu muuttaa  --skip-grant-tables valinnan kanssa ja mitään tietoja ei olekaan muutettu. MIkä oikeastaan on sammumasta kieltäytyvä mysql-ohjelma, ei ehkä itse palvelin?

Muok.

Vielä tuli yksi lisäkysymys  vastaan. pgrep ja ps näyttävät eri määrän käynnissäolevia mysql-prosesseja?

Koodia: [Valitse]
$ pgrep mysql
4253
$ ps aux | grep mysql
pilvikäyttäjä     4253  0.0  0.3  40600  7880 pts/0    S+   11:42   0:00 mysql -u root
pilvikäyttäjä     5815  0.0  0.0  14856  1084 pts/1    S+   13:06   0:00 grep --color=auto mysql




« Viimeksi muokattu: 01.07.20 - klo:14.14 kirjoittanut teele »

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
« Vastaus #9 : 01.07.20 - klo:14.49 »
tuo prosessi 5815 on juurikin kutsumasi grep ;)

_Pete_

  • Käyttäjä
  • Viestejä: 1836
  • Fufufuuffuuu
    • Profiili
Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
« Vastaus #10 : 01.07.20 - klo:15.34 »
No kokeilitko pääseekö kirjautumaan vaihdetulla salasanalla? Sillähän se selviää vaihtuiko vai ei :)


nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
« Vastaus #11 : 01.07.20 - klo:16.10 »
Nyt olisi ehkäpä ollut hyvä sauma kokeilla oletuskonfiguraation toimintaa, eli kuten Tomi sanoi, Ubuntun root-käyttäjätunnuksella pitäisi pystyä kirjautumaan suoraan mysql:n rootiksi.

Koodia: [Valitse]
sudo mysql -u root
Mutta taisit jo muuttaa asetuksia niin ettei tuo enää toimi...


Toinen alla olevasta päätetkestistä näkyvä asia on, että mysql-kehotteesta ei näytä pääsevän mitenkään pois.

Käytä quit-komentoa tai Ctrl+D:tä (joka toimii Linuxissa/Unixissa lähes poikkeuksetta erilaisten komentokehotteiden sulkemiseen).

Koodia: [Valitse]
mysql> UPDATE mysql.user SET authentication_string=password('rootinsalasana') WHERE user='root';
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 1

Varoitukset voi listata komennolla:

Koodia: [Valitse]
SHOW WARNINGS;
Koodia: [Valitse]
mysql> mysqladmin -u root -p shutdown
    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqladmin -u root -p shutdown' at line 1

Joo, eli tuossa olet edelleen mysql-kehotteessa, joka ei toimi tavallisena shellinä. Sulje mysql-kehote quit-komennolla tai Ctrl+D:llä ennen muiden komentojen suorittamista.


Voisiko varoitus koskea sitä, että salasanaa on aiottu muuttaa  --skip-grant-tables valinnan kanssa ja mitään tietoja ei olekaan muutettu.

Changed: 1 viittaa siihen että muutos meni tietokantaan asti, mutta voit käydä kokeilemassa uudelleen ja listata varoitus, niin näet mistä on kyse.

MIkä oikeastaan on sammumasta kieltäytyvä mysql-ohjelma, ei ehkä itse palvelin?

Joo ei ole itse palvelin. Se on erillinen asiakasohjelma, joka tarjoaa SQL-komentokehotteen, ja jolla tietokantaa voidaan ohjata vaikka verkon yli toiselta koneelta.

teele

  • Käyttäjä
  • Viestejä: 809
    • Profiili
Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
« Vastaus #12 : 01.07.20 - klo:18.36 »
Nåyttää, että rootin salasana on vapaaehtoinen, käynnistyy ilmeisestikin salasanan kera ja ilman riippuen, haluttanko mysql- käynnistystä salasanan kanssa vai ilman salasanaa.

Koodia: [Valitse]

sudo mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.30-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> UPDATE mysql.user SET authentication_string=password('porokkama') WHERE user='root';
Query OK, 0 rows affected, 1 warning (0.01 sec)
Rows matched: 1  Changed: 0  Warnings: 1

mysql> quit;

$ sudo mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.30-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> quit
Bye


Ensimmäinen tavallinen komento on saatu läpi!

Koodia: [Valitse]
sudo mysql -u root
[sudo] password for pilvikone:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.30-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SELECT VERSION(), CURRENT_DATE;
+-------------------------+--------------+
| VERSION()               | CURRENT_DATE |
+-------------------------+--------------+
| 5.7.30-0ubuntu0.18.04.1 | 2020-07-01   |
+-------------------------+--------------+
1 row in set (0.01 sec)

mysql>


Jos mitään yllättävää ei tule vastaan, laitan säikeen ratkaistuksi vähän ajan kuluttua.

Kiitos kaikista hyvistä vastauksista  :)



« Viimeksi muokattu: 17.09.20 - klo:18.27 kirjoittanut teele »

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
MySQL muuttui Ubuntussa jossain vaiheessa käyttämään auth_plugin -menettelyä.  Ennen sille piti antaa rootin salasana vanhaan tyyliin, mutta nykyään se on oletuksena niin, että jos olet jo itse root tai sudoilet, se hyväksyy sinut rootiksi suoraan.   

Tuolta löytyy tarkemmin:

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/

Sen saa toki halutessaan muutettua käyttämään vanhempaa kirjautumista.
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.