20/10/2020

mariadb of mysql databank server verbinding over netwerk

Filed under: — cybrarian @ 2:17 pm

Verbinding van buitenaf
Een databank als mysql of mariadb is standaard geïnstalleerd in OpenSUSE 15.1. Meestal met het mysql_secure_installation script, dat er voor zorgt dat de databank in een veilige toestand op de server komt (niet zoals vroeger met alles draaiend, open, zonder root wachtwoord en een bekende voorgedefinieerde gast of test account…). Je kan na de installatie vanop de eigen server (localhost) inloggen. Maar als je nu vanop afstand wil inloggen op mysql of rechtstreeks vanuit programma’s de databank wil aanspreken, moet je een paar aanpassingen doen. Hieronder enkele voor intern gebruik (in een eigen lokaal netwerk), en even situeren:

1. Installatie
2. local user
3. remote use
A. Firewall
B. listen to port
C. remote use
D. SSL tunnel/VPN

1. en 2. zijn gebeurd is het uitgangspunt.

3. remote use
3.A. Firewall
Opensuse YAST: Firewall tool, service “mysql”, in zone “public” (is bv default).

op de commandolijn:
systemctl status firewalld
(om te zien of hij draait)

firewall-cmd --list-all
toont lijst met bv:

..
services: ssh dhcpv6-client mysql
ports:

grep mysql /etc/services

toont op welke poorten de diensten zitten

grep mysql /etc/services
mysql-cluster 1186/tcp # MySQL Cluster Manager [Arjen_Lentz]
mysql-cluster 1186/udp # MySQL Cluster Manager [Arjen_Lentz]
mysql-cm-agent 1862/tcp # MySQL Cluster Manager Agent [Andrew_Morgan]
mysql-cm-agent 1862/udp # MySQL Cluster Manager Agent [Andrew_Morgan]
mysql-im 2273/tcp # MySQL Instance Manager [Petr_Chardin]
mysql-im 2273/udp # MySQL Instance Manager [Petr_Chardin]
mysql 3306/tcp # MySQL [Monty]
mysql 3306/udp # MySQL [Monty]
mysql-proxy 6446/tcp # MySQL Proxy [Kay_Roepke]
mysql-proxy 6446/udp # MySQL Proxy [Kay_Roepke]
mysqlx 33060/tcp # MySQL Database Extended Interface [Oracle_8] [Omer_BarNir]

3.B. listen to port

telnet mysql.servernaam.loc 3306

Trying 192.168.1.205…
telnet: connect to address 192.168.1.205: Connection refused

nc -v mysql.servernaam.loc 3306

nc: connect to mysql.servernaam.loc port 3306 (tcp) failed: Connection refused

Connection refused: waarschijnlijk is poort wel open, maar luistert de dienst niet.

Dat wordt bepaald in /etc/my.cnf
staat standaard uitgecomment:

#port = 3306

en bind-address=127.0.0.1 staat standaard aan; uit-commenten zodat hij die algemene bind netwerk doet.
bind-address=127.0.0.1

3.C. user name, ip
Gebruiker bijmaken voor gebruik vanop afstand. (voor elk ander gebruik dan root-beheer moet je een andere account maken).

CREATE USER ‘my_app_user’@’10.132.51.34’ IDENTIFIED BY ‘some-strong-password’;

In plaats van op 1 bepaald ip addres kan ook een reeks adressen gebruikt worden:
netmask IPV4: ‘my_app_user’@’10.132.51.0/255.255.255.0′
Wildcards:’my_app_user’@’%.example.com’

systemctl status mysql
systemctl restart mysql

7/9/2020

Databank lettertekenset (Collation)

Filed under: — cybrarian @ 10:59 am

Als ik in een huidige databank (mariadb) kijk met phpMyAdmin, zie ik op het hoogste niveau “databases” de namen van mijn databanken, en daarnaast de colom “Collatie”. Daar staat bij de meeste databanken utf8_general_ci. (zie ook Databank collation) Er is één uitzondering, en dat is de database “mysql” (van het systeem zelf). Die heeft als collation: “utf8mb4_general_ci”. Waarom?

Een artikel uit 2016 hier op Medium.com geeft daar een antwoord op, en als het klopt zou ik ook meestal utf8mb4 moeten gebruiken, en al mijn bestaande databanken moeten omzetten.

MariaDB is afgeleid van MySQL, en daar hebben ze ooit een zuinige vorm van Unicode tekenset gemaakt en die “utf8” genoemd. Helaas bleek die achteraf niet overeen te komen met de uitgewerkte UTF-8 standaard, en MySQL kon zijn eigen versie niet meer aanpassen omdat ze te weinig plaats hadden voorzien in hun opslagruimte daarvoor (3 bytes/letter ipv 4). Hun onvolledige “utf8” veranderen zou bestaande programma’s kunnen doen crashen, en het enige wat hen restte was een andere vorm van utf8 bij te maken: utf8mb4.

Daardoor heb je nu zowel “utf8_general_ci” als “utf8mb4_general_ci” (ook wel “Unicode UCA 4.0.0).
ps: CI staat voor Case Insensitive (niet hoofdlettergevoelig, een zoek op “Abc” levert ook “abc” op).
En ook utf8mb4_bin, utf8mb4_(taalcodes)
ps: bin = wel hoofdlettergevoelig, dus Abc en abc verschillen voor de databank.

bron: https://medium.com/@adamhooper/in-mysql-never-use-utf8-use-utf8mb4-11761243e434

26/4/2020

Delen in mijn public_html folder

Filed under: — cybrarian @ 10:29 pm

Covid-19, aan huis gekluisterd of in quarantaine, en snel wat dingen delen met je huis/kotgenoten? Daar bestaat een gemakkelijke, snelle, en Linux-vriendelijke manier voor: de map public_html.

public_html
Als Linux gebruiker zie ik in mijn “home” directory, map of folder een map “public_html” tussen de Document, Pictures enz. mappen, maar op het eerste zicht doet die map niets (of doet er niets iets met die map). public_html komt voor bij openSUSE, Debian, .. (kan een iets andere naam hebben, bv www, …).

Ze is bedoeld om bestanden te delen op een manier dat een webserver dat doet. Je kan er:
– gewoon bestanden in zetten om te laten downloaden of bekijken.
– een index pagina maken en het gebruiken als een soort persoonlijke website.

Webserver
Deze map wordt gebruikt door de webserver, die moet je dus installeren indien nog niet gebeurd.
Hij moet ook aktief zijn. Op een webserver is die normaal aktief, op je pc/laptop zal je die alleen aktiveren indien nodig.
Als de webserver (Apache) draait, en daarvoor is ingesteld (wat standaard zo zou kunenn zijn), dan gaat hij voor alle gebruikers, hier één voorgesteld door “cybrarian”, kijken in de map
/home/cybrarian/public_html
en die weergeven in bv Firefox aan de gebruikers van de webserver.

Zelf:
file:///home/cybr/public_html

Lokaal:
die directory weergeven aan andere gebruikers op diezelfde server die de site van die gebruiker opvragen op de manier:
http://localhost/~cybrarian/

Netwerk:
Stel dat de server het ip adres 192.168.1.67 heeft dan kunnen gebruikers binnen het eigen lokale netwerk de pagina’s opvragen met:
http://192.168.1.167/~cybrarian/

Hosting:
Ook bij hosting kan dit scenario voorkomen. De URL om de pagina’s op te vragen zal dan de internet-URL zijn van de server (of kan misschien ook met ip-adres).

Apache maakt dit mogelijk met “mod_userdir” (http://httpd.apache.org/docs/2.4/mod/mod_userdir.html).
Instellingen van de webserver kunnen roet in het eten gooien.
Maar het is een goede, veilige manier van werken want dan kan een gebruiker eenvoudig bestanden aanbieden aan de webserver zonder dat hij rechten moet hebben om in de webserver directories wijzigingen aan te brengen.

Voorbeeld:
Op OpenSUSE waar al een databank op draaide met phpMyAdmin stond de webserver al geïnstalleerd. Na het starten met
sudo systemctl start apache2
werkte het vanzelf. Je moet er enkel op letten ook werkelijk iets in die public_html te zetten, iets anders dan een “lege” index.html (die is wel nuttig om even de inhoud van je directory te verbergen).

3/3/2020

Verbinding met oude smb-server

Filed under: — cybrarian @ 3:38 pm

Probleem bij een desktop update naar openSUSE 15.1: de mount van een netwerkdrive werkte niet meer.

Foutmelding: iets van directory bestaat niet zonder aanduiding of het een directory bij de client of bij de server betreft.

Oplossing: na totaal willekeurig tips proberen heeft het verwijzen naar een oudere versie in het commando het script terug doen werken:

sudo mount -t cifs -o rw,vers=1.0,uid=joske,username=joske,password=soske //server.domain.local/joske /home/joske/lokalemap/

Voor wie er iets aan heeft… de server had samba 3.0.28.

27/1/2020

MySQL Automatisch nummeren wijzigen (AUTO_INCREMENT)

Filed under: — cybrarian @ 1:06 pm

Een databank mijndata heeft tabel mijntabel met een veld id, waarvoor de eigenschap AUTO_INCREMENT gezet is.

Elke keer er een record bijgemaakt wordt, verhoogt de waarde met 1, en standaard begint die waarde bij 1.

Als je het laatste record verwijdert, bv dat met id 3, zal een nieuw gemaakt record waarde 4 krijgen (niet waarde 3!).

Aan de opeenvolging van deze record id’s kan je bv zien dat er records verwijderd zijn. (tenzij…)

Als het om één of andere reden toch nodig is om een verwijderd record te vervangen door één met hetzelfde nummer als reeds gebruikt, kan je hetvolgende doen:
– verwijder alle records vanaf 3; hier dus 3 en 4 (als je er zeker van bent dat het record id nergens andere gebruikt is!).
– wijzig de AUTO_INCREMENT teller die wordt bijgehouden op tabelniveau.

ALTER TABLE mijndata AUTO_INCREMENT=3

Je kan het ook automatisch laten bepalen door de databank zelf:
ALTER TABLE mijndata AUTO_INCREMENT=1
De databank zal dan het eerstvolgende vrije nummer nemen, in dit geval 3.

Met phpMyAdmin:
Selecteer de database tabel, en kies tab “Operations”. Daar zie je onder “Table Options” de wijzigbare AUTO_INCREMENT waarde staan. Denk eraan dat hier de volgende toe te kennen waarde staat.

De waarde die de database bijhoudt om het volgende recordnummer te maken kan je zien in de extra informatie over de tabel in phpMyAdmin “Structure”, “Information”.
Daar vind je de volgende waarde bewaard als “next autoindex”.

Op de commandolijn kan je “show” gebruiken:
SHOW CREATE TABLE mijntabel;
In dat antwoord zie je “AUTO_INCREMENT=4”.

25/10/2019

phpMyAdmin (Max: 2,048KiB)

Filed under: — cybrarian @ 8:57 am

Bij het importeren van een database bestand (bv export mijndata.sql, een data backup of een dump uit mysql/mariadb), stoot je soms op een limiet, hier 2 Mb:

Browse your computer: No file selected. (Max: 2,048KiB)

Als je doorgaat en bv een bestand van 7 Mb probeert te uploaden, krijg je een foutmelding zoals:

No data was received to import. Either no file name was submitted, or the file size exceeded the maximum size permitted by your PHP configuration. See FAQ 1.16.

Uit de link naar de uitleg leer je dat er een paar plaatsen zijn waar je instellingen kan/moet aanpassen in het php.ini bestand.
Dat kan je (bv OpenSUSE 42.3) vinden in /etc/php5/apache2

php.ini

file_uploads = On
upload_max_filesize = 2M
post_max_size = 50M
memory_limit = 128 M
max_execution_time = 30

In de eerste lijn zie je de waarde terugkomend die de phpMyAdmin interface ook weergeeft. Je kan die wijzigen naar je eigen nodenm bv 8M.
Daarbij moet post_max_size > upload_max_filesize !

service apache2 restart
http://localhost/phpMyAdmin/server_import.php (of F5 om te herladen)

Daar zie je dan bv:

Browse your computer: No file selected. (Max: 8,192KiB)

Soms is dat al genoeg om verder te kunnen met je te-grote upload in phpMyAdmin.

21/10/2019

systeem (processor) belasting op commandolijn

Filed under: — cybrarian @ 12:32 pm

top (aanwezig; processen-tabel levend)

htop (bij te installeren)
– levende tabel zoals top, maar met kleurkode en optie-menu als mc; bovenaan extra meters voor processorbelasting per cpu en geheugen + swap. De meters worden gevormd door gekleurde streepjes die doen denken aan LED-VU-meters.

netwerkverkeer op commandolijn

Filed under: — cybrarian @ 12:30 pm

De meeste tools moet je onderbreken met ctrl-c.
(soms is er een menu aanwezig dat je met de F1-F10 kan bedienen)

netstat -t -u -c (status dump: tcp verkeer, udp verkeer, continuous=voortscrollend)
iftop (installeren) soort netwerk (h)top
iptraf
tcpdump -i eth0
nethogs (installeren): netwerkverkeer per proces

3/9/2018

Docker in Yast

Filed under: — cybrarian @ 12:46 pm

Installeren:
– Yast, Softwarebeheer, zoek docker
– docker, docker-bash-completion, docker-libnetwork, docker-runc, docker-zhs-completion, ruby2.1-rubygem-docker-api, yast2-docker, zypper-docker (docker-compose)
– installeer.

Controleren:

Yast Control Center, Virtualisatie, Docker.

Start de module met venster YaST2 – docker @ host.loc

Twee tabbladen: Images en Containers.

Containers toont de “running docker containers”

Na het starten van het “Hello World” voorbeeld (zie commando’s), wordt in tabblad [Images] zichtbaar:

hello-world latest sh256:2cb0d 2018-07-11T00:32:08+00:00 1.80 KiB

Docker commando’s

Filed under: — cybrarian @ 12:38 pm

Docker
(voorbeelden op OpenSUSE, volg de gids op docs.docker.com)

Docker installeren:
zypper install docker docker-compose

Docker starten
systemctl start docker

Docker stoppen
systemctl stop docker

Docker automatisch laten starten:
sudo systemctl enable docker

Docker groep vervoegen:
sudo usermod -G docker -a GEBRUIKERSNAAM

Versie van Docker:
host:/home/gebruikersnaam # docker --version

Docker version 17.09.1-ce, build f4ffd2511ce9

Aktieve containers:
host:/home/gebruikersnaam # docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

(niets in gebruik hier)

Meer info:
host:/home/gebruikersnaam # docker info

Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 17.09.1-ce
Storage Driver: btrfs
Build Version: Btrfs v4.5.3+20160729
Library Version: 101
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc oci
Default Runtime: runc
….

Hallo Wereld!
docker run hello-world

Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
9db2ca6ccae0: Pull complete
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the “hello-world” image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

# docker image ls

REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 2cb0d9787c4d 7 weeks ago 1.85kB

# docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

# docker image ls --all

REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 2cb0d9787c4d 7 weeks ago 1.85kB

# docker image ls -aq

2cb0d9787c4d

(q = quite mode)

7/2/2018

NextCloud server op OpenSUSE 42.3

Filed under: — cybrarian @ 6:21 pm

Nextcloud

Op huidige OpenSUSE?

Nextcloud is aanwezig in de openSUSE repositories (momenteel met versienummer 11.0.3), en kan daar eenvoudig uitgekozen worden, zowel server als client.

Er wordt bij Nextcloud server ook sqlite3, php5, apache en een akonadi plugin geïnstalleerd, in totaal 154.91 MB.

Je hebt een webserver nodig, die draait:

systemctl start apache2
linux-4j3c:~ # systemctl enable apache2
Created symlink from /etc/systemd/system/httpd.service to /usr/lib/systemd/system/apache2.service.
Created symlink from /etc/systemd/system/apache.service to /usr/lib/systemd/system/apache2.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/apache2.service to /usr/lib/systemd/system/apache2.service.

En een databank*:

linux-4j3c:~ # systemctl start mysql.service
linux-4j3c:~ # systemctl enable mysql.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mysql.service to /usr/lib/systemd/system/mysql.service.

Indien vers geïnstalleerd eventueel onnodige veiligheidsrisico’s uitschakelen met:
mysql_secure_installation

Na installatie is de server via de browser te bereiken:

http://my.server.ip.address/nextcloud

Foutje

De browser toont het antwoord:

This version of Nextcloud requires at least PHP 5.6.0
You are currently running 5.5.14. Please update your PHP version.

In de openSUSE package manager zijn ter twee php versies aanwezig: 5 en 7.

Helaas, als je php 7 installeert (apache2-mod_php7) en apache herstart, lijkt het nadien of je apache de .php scripts ziet als gewone tekst bestanden. In Firefox laat dat de gebruiker die php bestanden downloaden in plaats dat ze uitgevoerd worden en de gebruiker het resultaat te zien krijgt.

Dat kan er op wijzen dat apache de php module niet geladen heeft. Wat nazoekwerk leidt me naar een bestand in de php7 installatie, dat eigenaardig genoeg verwijst naar php5, maar dan moet php7 al gevonden zijn. (/etc/php7/apache2/php.ini)

Ik zoek verder hoe de apache website de php module laadt; en in het configuratiebestand van Apache2 staat inderdaad enkel het aanroepen van php5 (die niet meer geïnstalleerd is); het installeren van 7 heeft dit niet gewijzigd.
Dus met de hand aanpassen van 5 naar 7 (bv met mcedit):

mcedit /etc/sysconfig/apache2

Apache herstarten:

systemctl stop apache2
systemctl start apache2

Eventueel controleren met journalctl -u apache2

Daarna terug naar de browser:

http://localhost/nextcloud/

De blauwe startpagina verschijnt!

NextCloud configuratie

De volgende vragen of opties komen op je af in het openingsscherm:

Om een admin account te maken: gebruiker, wachtwoord.

Databank kiezen;
standaard SQLite met data in /srv/www/htdocs/nextcloud

Als je MySQL/MariaDB kiest moet je databank -naam, -gebruiker, -wachtwoord geven,
En de server opgeven; “localhost” staat vooraf ingevuld.

* Er wordt aangeraden om voor professioneel gebruik, met synchronisatie vanuit verschillende desktops eerder MySQL/MariaDB te gebruiken dan de ingebouwde bestanden-databank.

In het invulscherm is niet aangegeven of de databankgegevens vooraf moeten aangemaakt worden op de server, of dat door installatie gebeurt, maar dat is dus inderdaad het geval; anders krijg je een foutmelding: … access denied for user at localhost…

Na het aanmaken van de gebruikersaccounts in Nextcloud kom je op de volgende welkom-pagina:

http://localhost/nextcloud/index.php/apps/files/?dir=/&fileid=2

a safe home for all your data

Access & share your files, calendars, contacts, mail & more from any device, on your terms

.. waarachter een “desktop” pagina zichtbaar wordt met
– een kolom met All Files/Recent/Favorites/Shared…/Tags
– een kolom met mappen Documents en Photos en de bestanden Nextcloud.mp4 en Nextcloud Manual.pdf (die 63 blz is).

In de databank zijn dan 48 tabellen aangemaakt, telkens van de vorm “oc_*”.

Op de webserver ziet het er zo uit:

/srv/www/htdocs/nextcloud # ls
3rdparty AUTHORS console.php cron.php db_structure.xml index.html l10n occ ocs-provider remote.php robots.txt settings themes .user.ini
apps config core data .htaccess index.php lib ocs public.php resources search status.php updater version.php


Uitleg: https://en.opensuse.org/SDB:Nextcloud
En ouder al : https://lizards.opensuse.org/2016/10/28/nextcloud-installation-on-opensuse-leap/

18/10/2017

Backup kopie van harde schijf (harddisk clone)

Filed under: — cybrarian @ 11:07 am

Ik wil een exacte kopie van de harde schijf van een computer, omdat ik wil experimenteren met upgrades maar terug wil kunnen gaan naar het oorspronkelijke systeem als het nodig is.

Voorbereiden
Een live-distro in klaarhebben om te starten van USB-stick of cd/dvd.

(Knoppix, een repairt toolkit, .. Ik gebruikte bv Rescatux 0.41 gebaseerd op Debian Jessie)

De schijven verwisselen; de nieuwe monteren als uiteindelijke harde schijf voor het toestel.
Met een bakje of een interfacekabel kan je de originele harde schijf aan je computer via usb-aansluiten.

Misschien nog gemakkelijker: computer openmaken en de harde schijf aan sluiten op het passende kabeltje (hopelijk is er nog één vrij voor een harde schijf, anders kan je de dvd-lezer losmaken en die even gebruiken, of via een (externe) sub-naar-sata kabel werken.

Live start

Je start de computer met een usb-disk met een “live” Linux op, en doet van daaruit de kopie; opletten wat bron en wat bestemming is!

Als de computer niet spontaan van de USB/DVD start, zoeken naar de bios-toetsen: Bij het opstarten een bepaalde toets indrukken als de bios meldingen komen. Ze flitsen waarschijnlijk zo snel voorbij dat je wat toetsen moet proberen, bv:
ESC (meestal om bios-meldingen te zien of bios menu te krijgen)
F9 (soms BootMenu)
..

Open een root terminal (of een terminal en gebruik sudo) voor volgende commando’s:

Let op mogelijk QWERTY instelling; dat zou verkeerde commando’s of parameters kunnen veroorzaken.
Wie geen qwerty toetsenbord bij de hand heeft:
het = (qwerty) teken zit onder – (azerty)
(qwerty) – (azerty):
het teken zit onder )
het = teken zit onder
het / teken zit onder =
de a zit onder de q


fdisk -l

geeft mooi overzicht, bv

/dev/sda1   Linux Swap
/dev/sda2 * Linux
/dev/sda3   Linux
/dev/sda4 ...

Het sterretje geeft de boot-disk aan, dat is normaal de partitie met het Linux systeem.
De andere partitie is die met de /home directory in mijn geval.
(en ik had nog een partitie met een ander Linux systeem om uit te proberen)

De harde schijf die aan een usb-connector hangt kan er bv zo uitzien:

dd
Harde schijf kopieren van de gebruikte disk naar de nieuwe:
dd … is het gevaarlijke commando, als je je van richting vergist, kopieer je een lege disk over je volle…

# dd if=/dev/sdX of=/dev/sdY bs=64M conv=noerror status=progress

* ps: upd 20/02/2020. Origineel had ik staan

# dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync
In sommige distro’s (Arch) kan je:
# dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync status=progress

Maar
– 64K lijkt me weinig, zeker als het op een xGB RAM pc met 2 hd’s op SATA gebeurt.
– conv=noerror doet verder werken na een lees-fout.
– status=progress is waarschijnlijk overal beschikbaar (bv opensuse 15.x)
Met status=progress krijg je (op de puntjes snel veranderende cijfers):

215......... bytes (216 GB, 202 GiB) copied, 21800 s, 103 MB/s

Stilte
Dit is zo één van die commando’s (zonder status=progress) dat geen voortgang weergeeft, je vervalt dus in een spannende stilte.
(en waarschijnlijk springt je screensaver nog aan ook)
Dat duurt bv een goed uur bij een schijf van 160 GB (en ook iets meer dan een uur voor één van 500 GB).

Daarna krijg je terug je command prompt met verslag van in en out, en eventuele foutmeldingen.

Ok, je kan toch al vroeger iets te weten komen, met het commando kill -USR1 en dan het pid nummer van het proces.
Dat moet je doen vanuit een andere terminal, het antwoord komt wel in die met het dd commando.
De PID kan je eerst opvragen of zien met bv top. Ik zie hier dd met 1469 bovenaan in top staan, dus ik doe:

kill -USR1 1469

Je krijgt dan een gelijkaardige uitvoer als die op het einde, alleen zal je zien dat er bv 214 GB copied staat, terwijl je weet dat het er 500 zijn.

Error
Een schijf van 160 GB naar een schijf van 160 GB: toch niet groot genoeg?

# dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync

dd: error writing ‘/dev/sda’: No space left on device
2442045+1 records in
2442045+0 records out
160041885696 bytes (160 GB) copied, 4476.86 s, 35.7 MB/s

ps: Deze fout hoeft niet te betekenen dat het totaal niet gelukt is. Zie verder.

Starten

De vroegere systeem-harde schijf loskoppelen en/of verwijderen.
! Alvorens de nieuwe te starten: je moet kiezen of je dit systeem onmiddellijk met internet verbonden wil hebben, of eerst offline wil checken of het goed werkt, en dus de kabel uittrekt en/of de wifi schakelaar afzet. Anders zou het kunnen dat het nieuwe systeem e-mail afhaalt en wist op de server, en dan ben je die kwijt als je terug wil naar het vorige systeem.

In principe moet opstarten juist hetzelfde verlopen als voorheen, je hebt een exacte kopie. Als je bv een menu kreeg om te kiezen tussen verschillende Linux versies/distributies, krijg je dat nu ook.
Ik kan in dit voorbeeld nadien beide distributies starten en gebruiken.

Foutmeldingen

* Error …
De meest voorkomende foutmeldingen hebben te maken met de syntax; controleer de preciese schrijfwijze, spaties, enz.
Sommige parameters zijn verschillend per gebruikt start-systeem, werk eventueel zonder de feedback op het scherm.

* dd:erro writing ‘/dev/loop0’: Operation not permitted

Dit is de dvd speler!

Disk /dev/loop0: 672 MiB, ...
Device
/dev/loop0p1
/dev/loop0p2

16/9/2017

Mysql, MariaDB databank: welk type sleutel of id, en hoe groot?

Filed under: — cybrarian @ 10:27 am

Hoe groot kan een id worden? Meestal zet je de waarde van de sleutel op auto-increment.
Maar je wil liefst niet verrast worden door een databank waar je geen records meer kan toevoegen.

UNSIGNED INT: 4.294.967.295
UNSIGNED BIGINT: 18.446.744.073.709.551.615

Ik zie aangeraden worden om
– niet te spaarzaam te zijn op ruimte
– werk je op een 32 bit of 64 bit systeem?
– UNSIGNED te gebruiken als het kan; als je niet van plan bent om negatieve waarden te gebruiken kan je het bereik van een type als INT of BIGINT verdubbelen.
– INT(8) of INT(44) maakt geen verschil, aangezien dat getal enkel slaat op de weergave van de getallen, niet op de (maximum) waarde.

Waarschijnlijk is het niet slecht om in je applicatie een test in te bouwen bij het aanmaken van records, en het niet kunnen maken van een nieuw record op te vangen met een foutafhandeling. Maar zelfs dan kan het moeilijk worden om je applicatie overeind te houden, en levert het zeker problemen op voor de gebruiker. Misschien iets inbouwen voor als je in de richting van het maximum gaat?

8/9/2017

phpMyAdmin logt uit na 1440 seconden

Filed under: — cybrarian @ 9:22 am

Het is nu eenvoudig om de instelling van phpMyAdmin te veranderen zonder zelf in de configuratie bestanden te moeten gaan zoeken:

  • Start phpMyAdmin, log in
  • Kies het hoofdscherm (bv server:localhost) met General Settings en Appearance settings in het midden, en Database server – Web server – phpMyAdmin in de rechterkolom
  • Appearance settings, klik onderaan op “More settings”
  • Klik op het tweede tabblad met een steeksleutel: “Features”
  • Login cookie validity (seconden): verander 1440 naar een gepast getal.
  • Klik “Apply” om te bevestigen.

Helaas is deze instelling enkel geldig voor de huidige sessie!

Voor een meer permanente moet je toch op de server zijn:

In config.inc.php :
$cfg['LoginCookieValidity'] = 36000;

en in .htaccess bestand in de phpMyAdmin site:
php_value session.gc.maxlifetime 36000

Voor het gemak wat omrekeningen:

1140 seconden = 24 minuten
3600 seconden = 1 uur
28800 seconden = 8 uur
86400 seconden = 24 uur
432000 seconden = 5 dagen.

enz.

16/3/2017

PostgreSQL

Filed under: — pinguim @ 1:25 pm

Postgres

Een databank met SQL-taal, PostgreSQL – soms afgekort tot Postgres (vroegere naam Postgres95, Postgres verwees naar Ingres), is ontworpen voor gebruik op unix-achtige systemen, en is beschikbaar in de meeste Linux distributies, bij hosting providers enz.

LAMP?

De PostgreSQL wereld vertaalt de LAMP afkorting anders dan “Linux Apache MySQL Php”, en eigenlijk is hun afkorting zelfs logischer: Linux Apache Middleware PostgreSQL, waarbij Middelware staat voor de taal, bv php, python, …

De clients

Er zijn verschillende clients, als psql (commmandolijn), pgAdmin3, en phpPgAdmin.

  • psql

    Deze werkt pas als alles juist geconfigureerd is (zie PostgreSQL installeren)

    postgres@linuxbox:~> psql

    psql (9.4.9)
    Type "help" for help.
     
    postgres=#

    Of geef opties als:
    cybr@linuxbox:~> psql -d mydatabase
    cybr@linuxbox:~> psql -U myusername

    zoniet :
    psql

    psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket “/tmp/.s.PGSQL.5432”?

    psql

    psql: FATAL: role “myusername” does not exist

    (als je geen username opgeeft wordt standaard de linux user gebruikt)

    psql: FATAL: database “cybr” does not exist

    (als je geen database opgeeft en die van de user die dan als standaard genomen wordt, niet bestaat)

  • pgAdmin3 of pgAdminIII?

    Op commandolijn starten met :
    pgAdmin3
    wat een applicatie start (met een olifantfoto), en als titel heeft “pgAdminIII”

WebInterface

De bijhorende web-interface (vergelijkbaar met phpMyAdmin) is phpPgAdmin.
http://localhost/phpPgAdmin/

En MySQL?

Kan PostgreSQL geïnstalleerd worden op dezelfde server waar al een MySQL databank draait? Ja, in principe wel. Maar een praktijkvoorbeeld leert toch voorzichtig te zijn met je productieserver; bij na-installatie van postgreSQL op een bestaande distributie, eindigde ik met een fout die de webserver verhinderde te starten:
Syntax error on line 15 of /etc/apache2/conf.d/phpPgAdmin.conf
Dit heeft blijkbaar met phpPgAdmin te maken, en waarschijnlijk niets met PostgreSQL op zich, maar het effect is duidelijk.
Het heeft ook te maken met de distributie OpenSUSE 13.1, en de standaard daarin niet geladen Apache module mod_version.
Het is even snel verholpen door het toevoegen van die module in de apache configuratie /etc/sysconfig/apache2:

APACHE_MODULES=”… version”

Dan wordt het iets als:

# fairly minimal
# APACHE_MODULES=”authz_host alias auth dir log_config mime setenvif”
#
# apache’s default installation
# APACHE_MODULES=”authz_host actions alias asis auth autoindex cgi dir imap include log_config mime negotiation setenvif status userdir”
# your settings
APACHE_MODULES=”actions alias auth_basic authn_file authz_host authz_groupfile authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir reqtimeout authn_core authz_core version”

De server

Installeer in Suse via Yast, zoek “postgreSQL” of
zypper in postgresql94 postgresql94-contrib postgresql94-server

Starten gebeurt net als bij de andere servers als root met:

systemctl start postgresql

Check systemctl status postgresql

systemctl status postgresql
postgresql.service – LSB: Start the PostgreSQL master daemon
Loaded: loaded (/etc/init.d/postgresql)
Active: active (exited) since Mon 2017-03-13 11:13:32 CET; 10s ago
Process: 12947 ExecStart=/etc/init.d/postgresql start (code=exited, status=0/SUCCESS)

Mar 12 11:13:26 pgbox su[12963]: (to root) root on (null)
Mar 12 11:13:31 pgbox postgresql[12947]: Initializing PostgreSQL 9.2.14 at location /var/lib/pgsql/data..done
Mar 12 11:13:31 pgbox su[13034]: (to root) root on (null)
Mar 12 11:13:31 pgbox su[13069]: (to root) root on (null)
Mar 12 11:13:32 pgbox postgresql[12947]: Starting PostgreSQL 9.2.14 ..done
Mar 12 11:13:32 pgbox systemd[1]: Started LSB: Start the PostgreSQL master daemon.

Installatie

Zie PostgreSQL installeren

Gebruik (verschil MySQL/MariaDB)

EN-talig bondig overzicht op deze digital ocean site

Schema
In MySQL heb je een database, die verschillende tables bevat.
In PostgreSQL heb je een database, die bevat een Schema, dat bevat Tables
database.schema.table
Zonder er op te letten heb ik mijn tables in het schema “public” gemaakt.

Tabel
– “without OIDS” staat standaard aan in phpPgAdmin (**)
– Tabel zit in een Schema (database.schema.table)
– Tabel kan gemaakt worden “LIKE parent_table” (create table like ..) dan wordt die structuur al volledig overgenomen
– Tabel kan gemaakt worden met INHERITS; dat creëert een band

Veldtypes
veld “auto-increment” -> veld Type SERIAL (*)
veldtype int -> veld Type integer
veldtype varchare -> veld Type character varying (er bestaat ook Type text)
veldtype float -> numeric (voor geldbedragen, exact), anders float (inexact)
veldtype datetime -> timestamp (without time zone?).

*) SERIAL :

  • bij het maken van de tabel, creatie van het veld, kan SERIAL worden opgegeven (is eerste keuze in lijst phpPgAdmin types); dan wordt automatisch al het nodige gedaan (en wordt het uiteindelijk toch type integer). Je moet daar verder geen type, lengte, of zo bij opgeven, wel eventueel “Primary key” aanduiden.
  • Bij SERIAL wordt automatisch NOT NULL ingevuld.
  • Als je eerst integer kiest, kan je nadien niet wijzigen naar SERIAL! (je moet dan het veld verwijderen en opnieuw maken)
  • **) OIDS: Vroeger kon je in PostgreSQL ook tabellen maken zonder “id”, en toch individuele rijen aanspreken omdat PostgreSQL zelf een soort Object IDentifierS aanmaakte, die je expliciet kon opvragen en gebruiken. Nu maak je normaal tabellen met optie WITHOUT OIDS.

Commando’s

\l = show databases
\d = show tables
\d = show tables
\d table = show columns
\d+ table = describe table

15/3/2017

compgen

Filed under: — cybrarian @ 11:21 am

Ik ontdek een enorm handig commando, dat veel meer een ingebouwde tool in de bash shell blijkt te zijn:

compgen

Je kan er allerlei lijsten mee maken, bv van alle commando’s die je kan gebruiken op je server/pc.

Maar waar het mij best uitkwam is bij het snel checken of een gebruiker in het systeem is aangemaakt na installatie van een server (database):

compgen -u

at
avahi
avahi-autoipd
bin
daemon
dnsmasq
ftp
games
kdm
lp
mail
man
messagebus
mysql
news
nobody
nscd
ntp
polkitd
postfix
pulse
root
rtkit
scard
sshd
statd
svn
tftp
usbmux
uucp
wwwrun
cybrarian
pesign
postgres

Dat lijst eenvoudig alle namen op, zonder al de details die je zou krijgen met

cat /etc/passwd

at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash                                                                                    
avahi:x:497:496:User for Avahi:/var/run/avahi-daemon:/bin/false                                                                             
avahi-autoipd:x:486:483:User for Avahi IPv4LL:/var/lib/avahi-autoipd:/bin/false                                                             
bin:x:1:1:bin:/bin:/bin/bash                                                                                                                
daemon:x:2:2:Daemon:/sbin:/bin/bash                                                                                                         
dnsmasq:x:494:65534:dnsmasq:/var/lib/empty:/bin/false                                                                                       
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash                                                                                                  
games:x:12:100:Games account:/var/games:/bin/bash                                                                                           
kdm:x:488:486:KDM Display Manager daemon:/var/lib/kdm:/bin/false                                                                            
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash                                                                                           
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false                                                                                
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash                                                                                    
messagebus:x:499:499:User for D-Bus:/var/run/dbus:/bin/false                                                                                
mysql:x:60:493:MySQL database admin:/var/lib/mysql:/bin/false                                                                               
news:x:9:13:News system:/etc/news:/bin/bash                                                                                                 
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash                                                                                       
nscd:x:487:484:User for nscd:/var/run/nscd:/sbin/nologin
ntp:x:74:492:NTP daemon:/var/lib/ntp:/bin/false
polkitd:x:492:491:User for polkitd:/var/lib/polkit:/sbin/nologin
postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false
pulse:x:490:489:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rtkit:x:491:490:RealtimeKit:/proc:/bin/false
scard:x:489:487:Smart Card Reader:/var/run/pcscd:/usr/sbin/nologin
sshd:x:496:495:SSH daemon:/var/lib/sshd:/bin/false
statd:x:493:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
svn:x:485:482:user for Apache Subversion svnserve:/srv/svn:/sbin/nologin
tftp:x:495:494:TFTP account:/srv/tftpboot:/bin/false
usbmux:x:498:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
cybrarian:x:1001:100:cybrarian:/home/cybr:/bin/bash
pesign:x:484:477:PE-COFF signing daemon:/var/lib/pesign:/bin/false
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

14/3/2017

PostgreSQL installeren, configureren

Filed under: — cybrarian @ 11:48 pm

zie ook ons PostgreSQL artikel

Ik volg een (openSUSE) installatie met dit Engelstalig artikel, en vat het ook even samen…
https://www.howtoforge.com/tutorial/how-to-install-postgresql-and-phppgadmin-on-opensuse-leap-42.1/#step-install-postgresql

Opm: Ik installeerde via Yast ipv met zypper; zoek “postgres” en je krijgt heel wat opties; installeer de server, de client, de management tool pgadmin3, de webtool phpPgAdmin, de odbc- en libreoffice-drivers, … De server heeft het versienummer in de naam (postgresql94), de client niet (postgresql).

  • Leap 42.2 – postgresql94 – postgres – pgadmin .. – phpPgAdmin ..
  • openSUSE 13.1 – postgres92 (9.2) – postgres (psql 9.2) – pgadmin3 1.16 – phpPgAdmin 5.0.4

Starten doe je zo:

systemctl start postgresql
vroeger: /etc/init.d/postgresql start

… en checken of hij draait in details als (* volledig log zie onderaan):

linuxbox:/home/cybr # systemctl status postgresql

postgresql.service - PostgreSQL database server
Active: active (running) since Tue 2017-03-14 22:01:20 CET; 9s ago

linuxbox:/home/cybr # journalctl -u postgresql

Mar 14 22:01:19 linuxbox postgresql-init[4956]: 2017-03-14 22:01:19 CET HINT: Future log output will appear in directory "pg_log".
Mar 14 22:01:20 linuxbox systemd[1]: Started PostgreSQL database server.

Met veel details en uitleg:

ps aux|grep postgres

wat de hiërarchie toont van de processen (=> pid hoofdproces):

ps -AH|grep postgres

Bij installatie is er een user postgres gemaakt op de server;
compgen -u
je moet werken als die gebruiker om verder te configureren (als root wordt niet toegelaten in de standaard configuratie):

linuxbox:/home/cybr # su - postgres

postgres@linuxbox:~>

Start de commandolijn “client” psql:

postgres@linuxbox:~> psql

psql (9.4.9)
Type "help" for help.
 
postgres=#

Zet eerst een wachtwoord:

postgres=# \password postgres

Enter new password:
Enter it again:
postgres=#

Je geraakt uit de postgres commandolijn met \q

Maak, nog steeds als postgres user op je Linux systeem een nieuwe gebruiker en rol aan, en geef hem ineens superkrachten (en een database):

createuser -s nano
createdb nano_db

Geen reaktie = geen foutmeldingen.
Dan terug inloggen in psql en:

postgres=# alter user nano with encrypted password 'nano2test';

ALTER ROLE

postgres=# grant all privileges on database nano_db to nano;

GRANT


Op een andere terminal pas je de instellingen aan om op een publiek ip adres te luisteren, zodat je vanop een andere computer toegang krijgt, of een applicatie toegang kan geven.

mcedit /var/lib/pgsql/data/postgresql.conf

en wijzig de gepaste lijnen naar:

listen_addresses = 'localhost'
port = 5432

En dan de wachtwoordcontrole naar md5:

mcedit /var/lib/pgsql/data/pg_hba.conf

(de oude standaard waarde staat er nog boven)

# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
# local all all peer
local all all md5
# IPv4 local connections:
# host all all 127.0.0.1/32 ident
host all all 127.0.0.1/32 md5
# IPv6 local connections:
# host all all ::1/128 ident
host all all ::1/128 md5

en herstart de server:

systemctl restart postgresql

Om phpPgAdmin toegang te geven:

mcedit /etc/phpPgAdmin/config.inc.php

en vul de localhost in:

$conf['servers'][0]['host'] = '';

naar

$conf['servers'][0]['host'] = 'localhost';

Bovendien heeft Apache wat extra activatie nodig; check of php5 en version geladen zijn:

a2enmod -l

Indien niet:

a2enmod php5
a2enmod version

Herstart apache en postgresql.

In phpPgAdmin (http://localhost/phpPgAdmin/)
kreeg ik voordien te zien:

Attempt to connect with invalid server parameter, possibly someone is trying to hack your system.

Maar nu krijg ik netjes een welkom, een taalkeuze en als ik op Servers klik:

Server Host Port Username Actions
PostgreSQL localhost 5432

Ik kan nu (op PostgreSQL klikken en) inloggen met de voorheen gemaakte nano account. Ik zie de nano_db database en postgres (default administrative connection database).
Inloggen met de administratieve account postgres gaat niet! (maar dat is dus de bedoeling).

En de server terug stoppen:

systemctl stop postgresql
(daarna werkt natuurlijk phpPgAdmin niet meer, en blijft hangen op : “Login to PostgreSQL”)

Klaar!

(en nu misschien eens proberen te gebruiken vanuit Gambas?)

– – –
* vervolg starten/checken server:
(meer…)

7/3/2017

LAMP commando’s (kort)

Filed under: — cybrarian @ 11:40 am

LAMP
= Linux + Apache + MySQL/*/MariaDB + Php
als de databank postgreSQL is: Linux Apache Middleware PostgreSQL (zie)
Apache en de databank zijn de serverdiensten.
Voorbeeld voor openSUSE 42.2

Werking

systemctl start mysql
journalctl -u mysql

systemctl start apache2
journalctl -u apache2

Ook:
systemctl stop apache2
systemctl restart apache2

Ook:
systemctl status apache2

http://localhost/phpMyAdmin

ps: Behalve de diensten manueel opstarten, kunnen ze ook zelfstartend ingesteld worden.

Installatie

Als de servers nog niet geïnstalleerd zijn, installeren. Dan:
which mysql

/usr/bin/mysql

Voor de Apache webserver is het:
which httpd

/usr/sbin/httpd

En phpMyAdmin kan je zo helemaal niet vinden, want die installeert als een php programma in de webserver:

/srv/www/htdocs/phpMyAdmin

met configuratiebestanden:

/etc/apache2/conf.d/phpMyAdmin.conf
/etc/phpMyAdmin
/etc/phpMyAdmin/config.inc.php

Initialisatie MySQL/MariaDB

Je moet eerst de mysql server starten alvorens je dit script kan draaien (zie ook de meldingen in journalctl -u mysql na het starten van systemctl start mysql):

mysql_secure_installation

  • wachtwoord zetten (gebeurt in die mysql_secure_installation, alsook het verwijderen van anonieme gebruikers, het verbieden van een afstandlogin als root en het verwijderen van de testtabellen).
  • Firewall openzetten: Allowed Service: MySQL server (standaard poort 3306)
  • Luisteren naar buitenwereld? mcedit /etc/my.cnf zoek “skip-networking”, # skip-networking
  • Gebruiker maken en met rechten vanaf zijn ip-adres in MySQL users.

Gebruik

  • Om phpMyAdmin te kunnen gebruiken heb je Apache nodig.
  • Om meer dan alleen op de localhost te kunnen inloggen op phpMyAdmin/Apache moet er een opening in de firewall zijn voor de webserver (bv via Yast):

    Allowed Service: HTTP server (standaard op poort 80).

  • mysql: vanuit programma’s met mysql-users; vanop localhost en/of ip-address en/of % (alle adressen)


Zelfstartend

In het systeembeheer kan nagekeken worden of de serverdiensten automatisch opstarten:
OpenSUSE, Yast, System, Services Manager: “enabled“=start bij opstarten Linux server.
bv. apache2 Enabled, Active en mysql Enabled, Active (active=huidige toestand).

De knop “Show Details” geeft ook een heel mooie samenvatting:

Apache, niet aktief:

Service apache2 Full Info

* apache2.service - The Apache Webserver
Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled; vendor preset: disabled)
Active: inactive (dead)

Apache aktief:

* apache2.service - The Apache Webserver
Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2017-03-23 10:21:03 CET; 10s ago
Main PID: 20519 (httpd-prefork)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
Tasks: 6
CGroup: /system.slice/apache2.service
|-20519 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d/ -DSYSTEMD -DFOREGROUND -k start
|-20592 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d/ -DSYSTEMD -DFOREGROUND -k start
|-20593 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d/ -DSYSTEMD -DFOREGROUND -k start
|-20594 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d/ -DSYSTEMD -DFOREGROUND -k start
|-20595 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d/ -DSYSTEMD -DFOREGROUND -k start
`-20597 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d/ -DSYSTEMD -DFOREGROUND -k start

Mar 23 10:21:03 pencoed systemd[1]: Starting The Apache Webserver...
Mar 23 10:21:03 pencoed systemd[1]: Started The Apache Webserver.

Mysql aktief:

Service mysql Full Info

* mysql.service - MySQL server
Loaded: loaded (/usr/lib/systemd/system/mysql.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2017-03-23 09:47:05 CET; 8min ago
Process: 3651 ExecStartPost=/usr/lib/mysql/mysql-systemd-helper wait (code=exited, status=0/SUCCESS)
Process: 3639 ExecStartPre=/usr/lib/mysql/mysql-systemd-helper upgrade (code=exited, status=0/SUCCESS)
Process: 3630 ExecStartPre=/usr/lib/mysql/mysql-systemd-helper install (code=exited, status=0/SUCCESS)
Main PID: 3650 (mysqld)
Tasks: 23 (limit: 512)
CGroup: /system.slice/mysql.service
`-3650 /usr/sbin/mysqld --defaults-file=/etc/my.cnf --user=mysql

Mar 23 09:46:57 pencoed systemd[1]: Starting MySQL server...
Mar 23 09:47:02 pencoed mysql-systemd-helper[3650]: 170323 9:46:59 [Note] /usr/sbin/mysqld (mysqld 10.0.29-MariaDB) starting as process 3650 ...
Mar 23 09:47:02 pencoed mysql-systemd-helper[3651]: Waiting for MySQL to start
Mar 23 09:47:05 pencoed mysql-systemd-helper[3651]: MySQL is alive
Mar 23 09:47:05 pencoed systemd[1]: Started MySQL server.

26/2/2017

MariaDB, waar is /var/log/messages ?

Filed under: — cybrarian @ 11:22 pm

Op een recent geïnstalleerde Linux server installeer ik mariadb, en zoek ik hoe de database te starten en hoe te kijken of ze gestart is. Ze heet waarschijnlijk niet meer “mysql”? Of toch? En Apache?

MySQL / MariaDB

MariaDB na installatie starten:

systemctl start mysql

Check of ze gestart is:
cat /var/log/messages ? Zo was het vroeger.
Sinds de overgang naar systemctl is ook de systeemlog gewijzigd naar journalctl. Dat commanda op zich opent een nogal heel grote tekst-log-file waarin je zonder filteren niet veel bent.

Uitleg en opties:
man journalctl

journalctl -u myqsl

Elke lijn begint met de tijd, hostname, en de bron van de loglijn; er uit met q van quit.
Feb 26 23:00:39 myhost mysql-systemd-helper[3186]:
(ik heb die hieronder vervangen door _ om het wat overzichtelijker te houden)

Starting MySQL server…
_ Creating MySQL privilege database…
_ Installing MariaDB/MySQL system tables in ‘/var/lib/mysql’ …
_ 170226 23:00:40 [Note] /usr/sbin/mysqld (mysqld 10.0.29-MariaDB) starting as process 3225 _ OK
_ Filling help tables…
_ 170226 23:00:51 [Note] /usr/sbin/mysqld (mysqld 10.0.29-MariaDB) starting as process 3252 …
_ OK
_ PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
_ To do so, start the server, then issue the following commands:
_ ‘/usr/bin/mysqladmin’ -u root password ‘new-password’
_ ‘/usr/bin/mysqladmin’ -u root -h myhost password ‘new-password’
_ Alternatively you can run:
_ ‘/usr/bin/mysql_secure_installation’
_ which will also give you the option of removing the test
_ databases and anonymous user created by default. This is
_ strongly recommended for production servers.
_ See the MariaDB Knowledgebase at http://mariadb.com/kb or the
_ MySQL manual for more instructions.
_ You can start the MariaDB daemon with:
_ rcmysql start
_ You can test the MariaDB daemon with mariadb-test package
_ Please report any problems at http://mariadb.org/jira
_ The latest information about MariaDB is available at http://mariadb.org/.
_ You can find additional information about the MySQL part at:
_ http://dev.mysql.com
_ Consider joining MariaDB’s strong and vibrant community:
_ https://mariadb.org/get-involved/
_ Waiting for MySQL to start
_ 170226 23:00:54 [Note] /usr/sbin/mysqld (mysqld 10.0.29-MariaDB) starting as process 3289 …
_ MySQL is alive
Feb 26 23:00:55 myhost systemd[1]: Started MySQL server.

Check eigen mariadb server log:
cat /var/log/mysql/mysqld.log

En dan nog steeds het veilig in gebruik stellen van mariadb/mysql:
mysql_secure_installation

Apache

ps: Hetzelfde geldt voor apache, moest dat de volgende vraag zijn:

systemctl start apache

En eigenlijk is het apache2 natuurlijk, dus vind je het in de logs als:

journalctl -u apache2

Na installatie van phpMyAdmin apache stoppen en terug starten:

systemctl stop apache
systemctl start apache

of
systemctl restart apache2

22/3/2015

Cron job: de timer van Linux

Filed under: — cybrarian @ 12:26 am

Een script laten uitvoeren iedere 20 minuten:

Ik maak eerst een testscript met mcedit TestCronJob.sh met daarin:
touch /home/myself/bin/TestCronJob.txt

(het enige wat dat doet is de datum/tijd van dat testbestand aanpassen. Je kan het script eerst zelf op de commandolijn starten om te kijken of de werking juist is.)

Ik edit mijn cronjobs: ( * )
crontab -e

Soms moet je op de INS (insert) toets duwen om in de tekst te kunnen werken.
Wat je hopelijk weet is hoe je weer uit deze edit mode komt :p

  • Na het ingeven van de lijn doe je escape.
  • Dan tik je :wq, wat betekent : commando w write (schrijf of bewaar wijzigingen), en quit (afsluiten).
  • Wil je enkel afsluiten zonder bewaren: enkel :q, wil je tussendoor bewaren, enkel :w.

(als je nog geen cron jobs had krijg je een melding dat er een nieuwe file voor je wordt gemaakt)

Daarna kan je checken met
crontab -l

Voorbeeld van wat je in de crontab zet :

*/20 * * * * MyTestScript.sh

De sterretjes betekenen in volgorde: minuten, uur, dag, maand, weekdagnummer en daarna moet het commando komen.

Het truukje met de slash / zorgt ervoor dat het iedere 20 minuten gebeurt.
Je kan de uitvoering even veel korter zetten, bv */03 om het effect te bekijken.

Je kan ook opgeven om op 0,20,40 minuten te werken, dus opeenvolgend met een komma tussen.

Controle

  • Draait “cron”?
    De cron deamon draait normaal gezien altijd op je Linux systeem, hij voert deze timer taken uit.
    ps -A | grep cron
  • Om te checken of je script wel uitgevoerd wordt, kan je er ergens een lijn in opnemen als:
    touch /home/username/ItRuns.txt
    Aan de datum + tijd eigenschap van dit bestand kan je het starten van het script vaststellen.
  • Je kan ook telkens een lijn laten toevoegen aan een logfile, maar denk eraan die logfile ook op tijd te wissen of in te korten!
    echo `date` >> RunLog.txt

Cron jobs zijn uitermate geschikt om op geregeld tijdstip de logs uit te kuisen, en daarmee zijn we rond 🙂


(*) Mijn cronjobs: (upd 15/04/2015)

Cronjob van gebruiker

In een terminal uitgevoerd met de rechten van de gebruiker waarmee ik op dat ogenblik werk. Je hoeft de cronjobs dus niet als root in te stellen, de gewone gebruiker heeft ook recht op cronjobs!

Het gevolg is wel dat de “root” gebruiker – of jijzelf ingelogd als root – de cronjobs van de gebruiker niet ziet. Als root ga je dus die cronjob die je als gebruiker hebt ingesteld niet vinden!

Powered by WordPress