Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: teele - 16.06.20 - klo:15.36

Otsikko: [ ratkaistu ] Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: teele - 16.06.20 - klo:15.36
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?
Otsikko: Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: mrl586 - 16.06.20 - klo:16.04
Ylempää tapaa suositellaan nykyään.
Otsikko: Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: nm - 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.
Otsikko: Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: Tomin - 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ä. (https://websiteforstudents.com/mysql-server-installed-without-password-for-root-on-ubuntu-17-10-18-04/)
Otsikko: Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: teele - 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.
Otsikko: Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: nm - 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.
Otsikko: Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: teele - 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?
Otsikko: Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: nm - 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';
Otsikko: Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: teele - 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




Otsikko: Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: jekku - 01.07.20 - klo:14.49
tuo prosessi 5815 on juurikin kutsumasi grep ;)
Otsikko: Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: _Pete_ - 01.07.20 - klo:15.34
No kokeilitko pääseekö kirjautumaan vaihdetulla salasanalla? Sillähän se selviää vaihtuiko vai ei :)

Otsikko: Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: nm - 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.
Otsikko: Vs: Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: teele - 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  :)



Otsikko: Vs: [ ratkaistu ] Mysql käynnistys, sammuttaminen ja salasanan vaihto
Kirjoitti: ajaaskel - 16.09.20 - klo:16.11
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/ (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.