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=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

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!

22/2/2015

Databank collation (bv mysql): utf8-belgisch-ci ?

Filed under: — cybrarian @ 11:04 pm

Bij het maken van een nieuwe databank in MySQL (& -achtigen) moet je kiezen welke “collation” je wil.
Dit is de taalgevoeligheid van de databank, en komt tot uiting in sorteringen.
Voor een toepassing die enkel van belang is voor je eigen taalgroep, kies je voor een UTF8-islandic-ci (bv). Maar er komt geen “Belgisch” voor, en evenmin “Frans” of “Nederlands” of “Vlaams”, indien het al wenselijk zou zijn.

In de lijst zie je dikwijls de uitgang “_ci”: die staat voor Case Insensitive; dwz hoofdletter-ongevoelig. Dat kan een voordeel zijn bij sorteren komt “Dit” en “dit” bijeen te staan.

De meer algemene systemen zijn:
– utf8_general_ci : behandelt alle tekens als ASCII, dus behandelt “A” en “a” hetzelfde, en zet om: ù als u; mogelijk iets sneller, en mogelijk de standaard instelling (mysql 5.x)
– utf8-bin : hoofdlettergevoelig.
– utf8_unicode_ci : sorteert wel rekening houdend met aantal eigen taal-letters, bv Duitse “ß” als “ss”, niet hoofdlettergevoelig.

De twee laatsten lijken de meest aangewezen, naargelang de inhoud van de data.

  • Voor puur abstracte dingen als random productcodes wil je misschien onderscheid maken tussen hoofd- en kleine letters, en vooral tussen een mét een accent en een zonder in een lijst met sleutelwaarden (key-values); dus utf-bin.
  • Voor meer algemene tekst-data waar woorden of namen in voorkomen, voor Engels/Nederlands/Frans/Duits, is utf8_unicode_ci waarschijnlijk het handigst.

4/9/2014

Toegang tot MySQL server

Filed under: — pinguim @ 3:23 pm


Bij een standaard (bv Debian) installatie van de MySQL Server kan je tot de ontdekking komen dat je alleen op de server zelf aan de databank kan, terwijl je vanop afstand de data moet kunnen gebruiken. Je bent zeker dat de firewall de verbinding doorlaat (meestal poort 3306).
cybrarian@myworkstation:~
mysql -h databaseserver.servernet.loc -u cybrarian -p
ERROR 2003 (HY000): Can't connect to MySQL server on 'databaseserver.servernet.loc' (111)

De standaardinstelling om alleen toepassingen die op de server zelf draaien, toegang te geven tot de database, komt voort uit veiligheidsoverwegingen voor webservers; als de webserver en de databaseserver op hetzelfde toestel draaien, is er geen externe toegang nodig.

cybrarian@myworkstation:~
ssh cybrarian@databaseserver.servernet.loc
password:
Linux database 3.14 Debian GNU/Linux system ara free software; ....
Last login: Mon Sep 1 10:27 2014 from myworkstation.servernet.loc
cybrarian@databaseserver:~
mysql -u cybrarian -p
Enter password:
Welcome to the MySQL monitor.

Het is een standaardinstelling in een configuratiebestand my.cnf, die als root gemakkelijk verzet kan worden (met bv mcedit).
Het bestand bevindt zich meestal in:

/etc/my.cnf
/etc/mysql/my.cnf

De instelling die enkel naar de localhost doet luisteren, redelijk bovenaan:

bind-address = 127.0.0.1

vervangen door * om vanop alle toestellen te kunnen werken:

bind-address = *

Daarna nog de database server herstarten om het configuratiebestand te doen lezen:

service mysql restart

Nu kan je vanop het werkstation zowel manueel inloggen, als je eigen applicaties verbinding laten maken met de databank (bv vanuit Gambas).

2/9/2014

Theemuts tmux

Filed under: — cybrarian @ 11:39 am

Net zoals je de theemuts over de net opgezette theepot zet, en later terugkomt om te kijken of hij getrokken is, kan je tmux gebruiken om op de server iets te starten en nadien terug te komen kijken.

KDEKonsole-tmux

KDEKonsole-tmux


tmux
Als je tmux op de commandolijn start kom je in een gelijkaardig commandovenster met onderaan een groene statusbalk, een beetje vergelijkbaar met midnight commander (mc).

Je zit nog altijd in een shell, je kan in deze sessie gewone commando’s gebruiken als ls, ps, enz. Je kan verbinden naar een andere computer met ssh.

Met toetsencombinaties kan je nieuwe sessies starten, tussen de sessies omschakelen, sessies ontkoppelen, terug aankoppelen nadat de verbinding verbroken was, enz.

Belangrijkste commando’s

Starten en terug verlaten:
tmux
exit

Afkoppelen:
Ctrl-b d
(ToetsencombinatieCtrl-b, daarna een d
Waarbij Ctrl-b de code is om commando’s aan tmux te kunnen geven, de d staat voor detach)

Geeft als resultaat:
[detached]

Terug aankoppelen:
tmux attach

Voorbeeld:

  1. start tmux
  2. log in op een server,
  3. start iets op; bv een backup, of als test het commando top dat doorlopend de lijst van processen en processor/geheugengebruik laat zien,
  4. detach
  5. (doe iets anders op je terminal)
  6. Pik terug aan om het resultaat te zien of verder te werken op de server.

Kan er zo uitzien:

  1. tmux
  2. ssh meuser@serverone.local.loc
  3. top
  4. Ctrl-b d
  5. tmux attach

Installeren
Er is alleen installatie nodig op de client; m.a.w. op de computer vanwaar je vertrekt om commando’s te geven; de verbinding naar een ander toestel doe net als voorheen met ssh op de commandolijn.

tmux is niet standaard aanwezig op veel distributies.
Installeer met

  • Debian/Ubuntu: sudo apt-get install tmux
  • openSUSE: sudo zypper install tmux

Syntax
usage: tmux [-28lquvV] [-c shell-command] [-f file] [-L socket-name]
[-S socket-path] [command [flags]]

27/4/2014

Apache mysql/mariadb phpMyAdmin openSUSE 13.1

Filed under: — cybrarian @ 2:13 am

In openSUSE 13.1 is het allemaal voorzien, en eenvoudig te installeren via het menu Installa/Remove Software, of dezelfde optie in Yast (1), of natuurlijk via zypper (4). Na installatie de servers starten (2), en extra instellingen doen (3).

1. Installatie
In Yast, in het tabblad Search zoek je naar:

  • mysql

    • mysql-community-server

    met bijhorende bestanden, uit Oss/update repo

  • Ofwel, wat eerder de standaard vervanging voor mysql is, maar waarvoor je anders moet zoeken:
    mariadb

    • mariadb Server part of MariaDB

    met bijhorende bestanden, uit Oss/update repo; verder volledig te gebruiken als mysql – er zijn nodige links voorzien om het gebruik transparant te maken. Zo zullen voor phpMyAdmin, Gambas, enz nog programmaonderdelen met de naam “mysql…” voorkomen.

  • apache
    • apache2 The Apache Web Server Version 2.2

    en een aantal bijhorende bestanden, uit Oss/update repo (er zijn wat verschillende versies beschikbaar, bv 64 bit ea)

  • php

    • apache2-mod_php5 PHP5 module for Apache 2.0

    en een aantal bijhorende bestanden, uit oss/update, overeenkomende versie met Apache.

  • phpMyAdmin

    • phpMyAdmin Administration of MySQL over the web – 4.1.8

    bij deze versie van openSUSE dus aanwezig in de gewone repositories (Oss/update)

  • Nb: Volgorde
    Als je achteraan begint, bij phpMyAdmin, worden waarschijnlijk ineens de webserver, php, en de database mee geïnstalleerd uit de afhankelijkheden.

2. Starten en checken van de servers
Starten van servers gebeurt momenteel in openSUSE met systemcontrol:

  • systemctl start mysql.service
  • op de commandolijn kan je nu verbinden met mysql of mysqladmin
  • Nb: Hoewel mariadb geïnstalleerd is, wordt mysql.service aangeroepen, en de client mysql gebruikt.

  • systemctl start apache2.service
  • Vroeger kreeg je daarna in je browser een leuke welkom-pagina te zien bij openSuse, maar de frivoliteit is er wat af als je nu naar http://localhost gaat; je wordt afgesnauwd met “Access forbidden!”. Dat betekent niet dat je installatie niet werkt; integendeel. Onderaan zie je “Apache/2.4.6 (Linux/SUSE)”; het is je Apache die deze foutmelding geeft omdat er nog geen inhoud is.

3. Instellingen

  • Mysql/mariadb
    De databaseserver moet in het begin minstens voorzien worden van een wachtwoord voor de beheerder of root (in de betekenis van root voor de database, hoeft niet overeen te komen met die van het systeem). Zolang dat niet is ingesteld zal phpMyAdmin weigeren te werken:

    Login without a password is forbidden by configuration (see AllowNoPassword)

    Er is een scriptje voorzien om mysql/mariadb in te stellen, te draaien als root:

    mysql_secure_installation

    Verloop:

    • Geef het wachtwoord voor de databank als je het al gezet zou hebben; zoniet enter
    • Kies een wachtwoord voor de beheerder of root user van de databank; herhaal het. Je ziet uit de reaktie dat het wachtwoord is geupdate, en de rechten herladen worden.
    • Kies om de anonieme gebruiker te verwijderen (Y)
    • Uitschakelen van inloggen op afstand voor root gebruiker (Y voor online systeem; voor lokale installatie kan je het voor het gebruiksgemak laten aanstaan als dat nodig is. Of maak een eigen extra gebruiker aan met de nodige rechten zodat je toch root kan buitensluiten)
    • Verwijder de standaard aanwezige test databank: (Y); maak zel zelf aan als je ze nodig hebt, met een eigen relevante naam die aangeeft wat je aan het testen bent, dan kan je gemakkelijker opkuisen nadien.
    • De laatste stap is het bevestigen van het herladen van de rechten
  • PhpMyAdmin

    In je brower, bv Firefox, kan je nu inloggen op phpMyAdmin, vanop hetzelfde toestel http://localhost//phpMyAdmin

    Opmerkingen:
    Je krijgt onderaan een foutmelding die doorverwijst naar documentatie, bv over de Server relation.
    Maar niet alle documentatie lijkt aanwezig, ik miste bv http://localhost/phpMyAdmin/pmadb
    Een online link met interessante uitleg daarover is http://wiki.phpmyadmin.net/pma/control_user
    Een goed begin is waarschijnlijk het configuratie bestand aanpassen of maken config.inc.php (zie setup doc).

4. Zypper:
Goede Engelstalige uitleg met gebruik van zypper commandolijn-tool.
http://www.unixmen.com/install-lamp-server-apache-mariadb-php-opensuse-13-1/

28/3/2014

Chronometer of timer zonder installeren

Filed under: — cybrarian @ 7:35 pm

Hoe een chronometer of timer gebruiken zonder een programma te installeren (bv op een toestel waar je die rechten niet hebt).

Open een commandovenster (in OS-X heet dat Terminal, in Linux bv Konsole, ..). Daar heb je beschikking over een klok die zegt hoe laat het is: date. Je hebt ook beschikking over een commando time, maar dat lijkt niet veel te doen, je krijgt enkel een paar lege waarden:
$ time
real 0m0.000s
user 0m0.000s
sys 0m0.000s

Misschien de “help” van time eens bekijken:

time --help
-bash: --help: command not found

real 0m0.016s
user 0m0.000s
sys 0m0.002s

Onze vraag is fout, maar leert wel iets over het time commando: het geeft feedback over hoe lang het uitvoeren van een commando duurt.

Op OS-X krijg je de juiste uitleg over time met “help time”:
help time
time: time [-p] PIPELINE
Execute PIPELINE and print a summary of the real time, user CPU time,
and system CPU time spent executing PIPELINE when it terminates.
The return status is the return status of PIPELINE. The `-p' option
prints the timing summary in a slightly different format. This uses
the value of the TIMEFORMAT variable as the output format.
times: times
Print the accumulated user and system times for processes run from
the shell.

Het enige wat we moeten doen, is een commando starten, en gecontroleerd laten eindigen als “stop”; de tussentijd zal weergegeven worden in de waarde “real”.

De meeste commando’s hebben maar een bepaalde en korte uitvoeringstijd, zoals “ls”; dus daarmee lukt het niet. Een van de commando’s waar je time wel mee kan combineren kan is cat; je drukt op de stop-knop met ctrl-c.
(hoedje C staat voor ctrl-c of onderbreken van een lopende opdracht):

time cat
^C
real 0m2.034s
user 0m0.001s
sys 0m0.002s

Je chronometreerde hier dus 2 seconden.

Ps: op de KDE 4 dekstop heb je bv de aftel-timer (eitje koken, thee zetten, doorlooptijd espresso-machine …).
Op de menubalk onderaan widget toevoegen, zoek naar “Timer (Countdown over a specified ..”). Bij de opties kan je zelf een toetsencombinatie toevoegen voor start/stop. Je kan hem helaas niet laten “optellen” ipv aftellen.

8/10/2013

Laten inloggen zonder vast ip: Reverse ssh tunnel

Filed under: — cybrarian @ 11:14 am

Een Linux gebruiker, LU, heeft een Linux machine achter een (asdl) modem; hij heeft geen vast IP adres, en wel volledige (root) toegang tot zijn eigen machine, die ssh toegang laat op poort 9022 (dus niet op de standaard ssh poort). De poort die gebruikt wordt voor de omgekeerde ssh is 19999 (eigenlijk vrij te kiezen poort die niet in gebruik is).

Hij gaat ten rade bij linuxguru die wel een domein heeft (kan ook vervangen door zijn ip adres op dat moment): linuxguru.edu.tld.

LU geeft op de commandolijn in:

ssh -R 19999:localhost:9022 temp@linuxguru.edu.tld

LinuxGuru kan nu inloggen met

ssh localhost -p 19999

Een paar links:

4/9/2013

Random wachtwoord maken met pwgen

Filed under: — pinguim @ 10:06 am

Zonder extra tools kan je op de commandolijn random tekens maken om als wachtwoord te gebruiken (Random wachtwoord maken). Maar er bestaat ook een hulpmiddel voor…

Start je pakketbeheerder en installeer de tool, bv:

  • openSUSE: Yast, software installeren, zoek “makepass”; klik het voorgestelde pwgen aan. Bevestig installatie.
  • openSUSE: sudo zypper install pwgen
  • deb/untu: sudo apt-get install makepasswd

Je kan daarna in openSUSE gewoon “pwgen” tikken, en je krijgt 8 kolommen met 20 mogelijke wachtwoorden om uit te kiezen, totaal dus 160. Een daaruit ziet er bv zo uit: eitish4E

Het commando heeft heel wat opties om nog te varieren,

pwgen --help

en een goede is een extra niet-letterteken op te nemen:

pwgen -y

Dan krijg je iets als:

aGo)joo7
shae_w7I
cah=V6ur
auN?aeD5
Choh.n8f
av7aD;ae

Nee, gebruik deze niet 😉
Maak er zelf. Combineer twee stukken als het aantal tekens te kort is.

In deb/untu gebruik je het bv zo:

makepasswd --char=8 --crypt-md5

De parameter –char=8 geeft aan dat het wachtwoord 8 tekens lang moet zijn.

30/8/2013

MySQL server draait door

Filed under: — pinguim @ 11:28 am

Een Proliant ML server staat lawaaierig te blazen, alsof hij het heel warm heeft. Hij werkt nog normaal, maar een blik op het processorgebruik toont dat één van de twee processoren aan 100% zit te werken. De tweede processor heeft percentages die meegaan met het starten van taken op de server, vandaar dat het niet echt direkt merkbaar is. Maar wat veroorzaakt die drukte?

De processentabel verraad dat MySQL draait aan 50% continue; wat overeen kan komen met 1 van de 2 processoren. De programma’s op de server die MySQL gebruiken draaien nog en reageren normaal (binnen lage belasting op het moment weliswaar).

Inloggen op de server.
Inloggen in MySQL: mysql -u root -p

In de mysql prompt kan je dan weer naar de processen kijken:
mysql> SHOW PROCESSLIST;

Dat geeft een typische mysql-tabel met een aantal kolommen: Id, user, Host, db, Command, Time, State en Info.

De lijnen bestaan uit de processen.

Ze hebben een nummer, net als de processen in Linux.
Je kan ze ook “killen” op dezefde manier.

Zoek het proces dat het probleem vormt en overweeg of het kwaad kan om het te verwijderen.

In mijn geval was het een sql-statement dat ik uitgeprobeerd had in phpMyAdmin, op zoek naar gegevens de dag voordien; en er zat waarschijnlijk een fout in de query waardoor die eeuwig duurt en het antwoord gigantisch groot wordt. Kill dus!

mysql> KILL 3357;

Query OK, 0 rows affected (0.04 sec)

Daarna is het process verdwenen uit de tabel.

+------+--------+-----------+--------+---------+-------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+------+--------+-----------+--------+---------+-------+-------+------------------+
| 161 | bacula | localhost | bacula | Sleep | 25525 | | NULL |
| 3438 | cms | localhost | CMS | Sleep | 2114 | | NULL |
| 3439 | cms | localhost | CMS | Sleep | 1224 | | NULL |
| 3440 | cms | localhost | CMS | Sleep | 4353 | | NULL |
| 3441 | cms | localhost | CMS | Sleep | 4334 | | NULL |
| 3442 | cms | localhost | CMS | Sleep | 3094 | | NULL |
| 3443 | cms | localhost | CMS | Sleep | 2217 | | NULL |
| 3444 | cms | localhost | CMS | Sleep | 2137 | | NULL |
| 3445 | cms | localhost | CMS | Sleep | 2244 | | NULL |
| 3446 | cms | localhost | CMS | Sleep | 4148 | | NULL |
| 3447 | cms | localhost | CMS | Sleep | 2282 | | NULL |
| 3448 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+------+--------+-----------+--------+---------+-------+-------+------------------+

Onderaan zie je het commando zelf, erboven applicaties zoals het backup programma bacula en een cms toepassing.

26/8/2013

KDE4 en het knotify4 duiveltje

Filed under: — pinguim @ 11:21 am

KDE heeft een logo rechts in de takenbalk, waar een “i” van informatie duidt op allerlei meldingen van het systeem of programma’s. Er kan bv “mail succesvol verzonden”, “bestanden gekopieerd”, enz. gemeld worden. Het systeem dat daar achter zit heet KNotify, in de huidige KDE versie is dat KNotify4.

Op één van mijn KDE desktops lijkt er soms iets fout te gaan met die Notify. Knotify begint zoveel geheugen te gebruiken dat de werking van de desktop (en de hele computer) vertraagt, tot op een punt dat het lijkt alsof hij niet meer reageert. Servertaken worden ook getroffen, op afstand inloggen met ssh is zelfs moeilijk.

Via de terminal (sessie opgeroepen met ctrl-ALT-F2) ingelogd als root, het commando “top” ingegeven om te kijken wat er aan de hand is:
De grootste slokkop op gebied van geheugen blijkt knotify4 te zijn.

De desktop is zo traag dat ik niet naar de knotify meldingen kan gaan kijken, maar documentatie op internet geeft een mogelijke oorzaak: geluids-meldingen (in KDE heet dat blijkbaar phonon).

Volgens een beschrijving is de geluidsverwerking door xine de oorzaak, en kan je een andere “player” voor de geluiden instellen in phonon.

Hier is niet xine maar gstreamer ingesteld dacht ik, maar op dit toestel heeft dat niet echt zin, ik heb hier nooit het geluid ingesteld; dus ik zet de geluidsmeldingen van KDE af:

“Personal Settings” –> “Application and System Notifications” –> “Manage Notification” –> “Player Settings” –> “No audio output”

Ik houd het verder in de gaten en kom hierop terug moest het probleem daarmee niet opgelost zijn.

Bronnen:
http://forums.opensuse.org/english/get-technical-help-here/applications/462369-11-4-knotify4-seems-too-hungry-ram-cpu.html

http://paul-pach.blogspot.com.br/2008/03/finding-bloat-in-kde4.html

18/7/2013

Database testdata maken met ooo/libre-office

Filed under: — pinguim @ 12:29 pm

Dit voorbeeld gaat uit van een databank met produkten, met de volgende tabellen:

  • prd : produkt
  • cat : categorie
  • prdcat : produkt-categorie koppeling

We gebruiken een rekenblad om ze aan te maken, en importeren ze daarna in mysql, via de web-interface phpMyAdmin (moeten beide al geïnstalleerd zijn dus).

Start een nieuw, leeg rekenblad en

  • Maak 3 tab-bladen: prd, cat, prdcat.
  • Zet in prd bovenaan de titels: id, prd_name, prd_stockalarm, prd_stock, prd_lastprice, cre_date, cre_user, upd_date, upd_user
  • Vul in de eerste rij de waarden in: 1, Product1, 10, 0,0, 18/7/2013, (leeg), sys, (leeg).

Product

  • Het veld id is de key in de database, wordt automatisch toegekend, en verhoogt steeds met 1. Vul er een 100-tal in door de cel met de 1 te selecteren, en het hoekpunt rechts-beneden vast te nemen en recht naar beneden te slepen: de cellen eronder worden gevuld met opeenvolgende waarden (2, 3, 4, 5, …).
  • Het veld prd_stockalarm zetten we voor heel de kolom op 10; selecteer de 10, kopieer. Selecteer een heel bereik naar beneden en plak.

Random Stock

  • Voeg achteraan een kolomtitel toe “random stock”.
  • Tik in de eerste rij van random stock “=ROUND(RAND()*10;2)”. Kopieer naar beneden over 100 lijnen; er komen allemaal verschillende waarden in te staan.
  • Selecteer uit de kolom de random waarden, kies Edit, Copy.
  • Ga op de eerste cel staan onder prd_stock. Rechtklik, Paste Special… en kies voor waarden invullen, maar formules af. Hiermee plak je de getallen van die kolom met random waarden.

Euro 0,00

  • Maak een kolom “random prijs”, zet in de eerste cel “=ROUND(RAND()*10;2)”. Kopieer 100 naar beneden. Hiermee hebben we een prijs in Euro tot 2 cijfers na de komma nauwkeurig. Kopiëer en plak met “paste special”, enkel de waarden.

20 Cats

  • In tabblad Cat vul je de titels in: id, cat_name, cre_date, cre_user, upd_date, upd_user, en vul de id’s: vul 1 in en trek 20 rijen naar beneden
  • Vul een creatie datum en en kopieer naar alle rijen, hetzelfde met cre_user.
  • Vul onder cat_name de eerste cel met “Category1”, en trek ze 20 naar beneden.

Product – categorie koppeling

  • De koppeling heeft vooral sleutelvelden: id, prd_id, cat_id. Vul de id’s met opeenvolgende nummers, bv ook 100
  • Kopieer de kolomnamen cre_date, cre_user, upd_date, upd_user en de eerste rij van waarden uit het tabblad van de categorie, en kopieer de waarden naar de volgende rijen.
  • Kopieer de prd_id waarden uit de producten; daarmee weten we zeker dat we elk produkt hebben; of kies bv om de 20 laatste niet mee te kopiëren; die hebben dan nog geen categorie toegewezen gekregen in ons toekomstig systeem.
  • Voeg een kolom toe “randbetween”, en tik op de eeste lijn de formule: “=RANDBETWEEN(1;19)”. Daarmee maken we een willekeurige categorie; maar de laatste categorie “20” komt nog niet voer. Kopieer naar alle rijen. Kopie en plak speciaal om de waarden in de kolom cat_id te plakken.
  • Voeg rechts een kolomtitel toe “random”, en zet daarin een gewone random formule: “=RAND()”, kopieer ze over alle rijen. Selecteer de hele kolom, kopie, plak speciaal als waarde in een volgende kolom met title “random order”. Deze kolom met random waarden gebruiken we om de volgorde van de sleutels van de producten een beetje dooreen te gooien; nu lijkt er een verband te bestaan tussen de id van de koppeling en de id van het produkt, wat niet de bedoeling is.
  • Selecteer de kolommen vanaf prd_id tot random order. Kies in het Data menu de sorteeroptie. Klik eerst op opties, en zet dat de Range de kolomtitels bevat. Nu krijg je bij sorteer criteria een drop-down lijst met de kolomtitles onder “sort by”: kies “random order”
  • De eerste kolom moest blijven staan, en nu heb je een meer willekeurige invulling van de tabel met de koppeling van produkt en categorie.

Naar MySQL

  • Verwijder alle kolommen die maar dienden als tussentijdse hulp: random, random order, random prijs, random stock.
  • Start phpMyAdmin op het adres van de server of http://localhost/phpMyAdmin op je eigen computer. Ga op het hoogste niveau staan (servernaam of localhost bv), en kies de tab “Import”.

Je moet/kan daar 3 zaken opgeven:

  1. File to import: daar kies je met bestandbeheer het spreadsheet document dat je maakte.
  2. Partial import: kan je doen als je problemen ondervindt.
  3. Format of imported file: hier kies je Open Document Spreadsheet; dan krijg je wat extra opties: Options. Kijk bv naar:
    • Column names in first row: inderdaad.
    • Do not import empty rows: best wel.
  • Kies nu het bestand en “Go” om de import te starten.

Import has been successfully finished, 7 queries executed.

The following structures have either been created or altered. Here you can:

* View a structure`s contents by clicking on its name
* Change any of its settings by clicking the corresponding “Options” link
* Edit its structure by following the “Structure” link

* ODS_DB (Options)
o prd (Structure) (Options)
o cat (Structure) (Options)
o prdcat (Structure) (Options)

De naam van de database heeft hij helaas niet van het bestand genomen, maar is “ODS_DB” geworden.

Onder het tabblad “Operations” in phpMyAdmin kan je de naam veranderen: “Rename database to: ”

Als je een gebruiker aanmaakt en die de nodige rechten geeft (kan ook vanuit phpMyAdmin), is de database klaar voor gebruik:

SELECT prd_name, cat_name
FROM prd, `prdcat` , cat
WHERE prd.id = prdcat.prd_id
AND prdcat.cat_id = cat.id

SELECT cat_name, prd_name FROM prd, `prdcat`, cat WHERE prd.id=prdcat.prd_id AND prdcat.cat_id=cat.id AND cat.id<5 ORDER BY cat_id


Check zeker de omzetting bij de import; ik ontdekte dat sommige waarden niet werden gelezen en de kolommen “verschoven” ingelezen werden: als een waarde in twee opeenvolgende kolommen hetzelfde is (bv prd_stock=10 en prd_lastprice=10), wordt slechts die van prd_stock ingevuld, de andere “verdwijnt”, en er wordt voor het veld prd_lastprice verdergelezen in de volgende kolom cre_date!

17/7/2013

Konqueror KDE: de verborgen bestanden tip

Filed under: — pinguim @ 10:26 am

Ik vond het al lang irritant dat het niet eenvoudiger is om in Konqueror de verborgen bestanden “aan of af” te zetten. Vooral als je op een server ingelogd bent, wil je ze zichtbaar, omdat configuratiebestanden beginnen met een “.”. Zoals bv de “.htaccess” bestanden op een Apache webserver.
Hoewel ik nog altijd zou willen dat konqueror er een vast icoon voor krijgt*, bv gewoon een knop met een “.” op, leg ik me nu neer bij de eigenlijk zeer handige shortcut:

Alt-.

Die zet in het huidige venster de verborgen bestanden zichtbaar/onzichtbaar.

(* Settings, Configure Toolbars, Main Toolbar: kies een knop met “Show hidden files”. Maar die bestaat dus niet.)

Wie konqueror mist in KDE: hij bestaat nog, je moet hem wel naar boven werken, door in de desktop instellingen de standaard bestandsbeheerder van Dolphin naar Konqueror te zetten, en hem op te nemen in je lievelingsmenu.

Powered by WordPress