MySQL gebruiken met MySQL Workbench

Ik gebruik graag MySQL Workbench om queries uit te voeren op mijn server. Alleen standaard kan de MySQL server niet van buiten af worden benaderd om veiligheidsredenen. Ik denk dat ik het op deze manier toch redelijk veilig heb geregeld.

Open de juiste poort op de firewall

Hoe dit gaat lees je hier. Het gaat standaard om poort 3306.

Specifiek toegang verlenen per database

In DirectAdmin kun je heel makkelijk per database aangeven welke ipadressen van buitenaf toegang hebben. Ga naar de site waar het om gaat (de User in DirectAdmin dus).

Klik op MySQL Management en klik op de database waar het om gaat.
Bij Access Hosts voeg je het ipadres toe van jouw locatie (dus wat je ziet bij https://www.whatismyip.com/).

Of voeg het toe als domeinnaam. Ga daarvoor naar een dos-box op je eigen pc en typ:

tracert 111.222.333.444 <– Het ipadres van jouw locatie

Je krijgt dan zoiets als GFTYG5434.blabla.provider.nl.

Binding

Bij mij werkte het toen nog niet.
Ik kwam er achter dat in een configuratiebestand van MySQL staat aan welk ip-adres het is gebonden.

Het gaat om het bestand /etc/my.cnf
In dit bestand staat vlak onder [mysqld]
bind-address = 127.0.0.1

Bij mij stond dit dus op Localhost en daarom lukte het me blijkbaar niet om van buitenaf op de database te komen. Ik heb daar het primaire ipadres ingevuld van mijn server.
Daarna heb ik via DA de MySQL-server gestopt en gestart. (Log in als admin, klik op service monitor en drup bij mysqld op stop en even later op start).

 

 

 

Regex

Altijd lastig: Regular Expressions, of kortweg RegEx. Voor mezelf in dit stukje met een paar voorbeelden met bijbehorende uitleg.

Youtube
^(.+)([/]watch[?]v=)(?<key>(.+))$|^(http)(s)?[:][/]{2}youtu[.]be[/](?<key>(.+))$
Allereerst staat ergens middenin een pipe-teken (|). dat geeft aan dat deze RegEx zoekt naar twee verschillende patronen. Anders gezegd zijn er twee patronen toegestaan:
^(.+)([/]watch[?]v=)(?<key>(.+))$   en  ^(http)(s)?[:][/]{2}youtu[.]be[/](?<key>(.+))$
Ik begin bij de linker. Deze zoekt naar een patroon zoals http://www.youtube.com/watch?v=m5fNKbNuCBI
.   zoekt één willekeurig teken.
.+ zoekt tenminste één willekeurig teken
^(bla) zoekt een tekst dat begint met “bla”.
^(.+)  is dus een tekst die begint met een willekeurig aantal willekeurige tekens.
daarna staat ([/]watch[?]v=). Dus na ^(.+) wordt naar “/watch?v=” gezocht. Het maakt dus niet uit wat er voor /watch?v= staat. De slash en het vraagteken kunnen iets anders betekenen en staan dus expliciet tussen rechte haken.
(bla)$ zoekt naar bla op het einde van een tekst. Dus (.+)$ zoekt naar willekeurige tekens op het eind. De (?<key>(.+)) geeft aan dat we dit deel ‘opvangen’ in variabele ‘key’.

Dan het rechter deel. Deze zoekt naar een patroon zoals http://youtu.be/m5fNKbNuCBI
^(http)(s)?[:][/]{2}youtu[.]be[/](?<key>(.+))$
Zoekt naar tekst dat begint met ‘http’. (s)? betekent 0 of één keer ‘s’. dan moet er een dubbele punt staan, dan 2 x een slash en daarna ‘youtu.be/’ (de punt en slash moeten expliciet). Het einde komt overeen met het einde van het eerste deel.

Gebruik in PHP
In PHP ziet RegEx er iets anders uit. verschillen:
^ aan het begin wordt / en $ op het einde wordt ook /
Tekens die iets anders kunnen betekenen worden ge-escaped met \
Dus [/] wordt \/
Variabelen gaan niet zo ?<key> maar zo ?P<key>

Voorbeeld:
<?php
$str = ‘http://youtu.be/hAlLoDaAr’;
preg_match(‘/(.+)youtu.be\/(?P<key>(.+))/’, $str, $matches);
print($matches[key]);
?>
Dit geeft ‘hAlLoDaAr‘ in beeld.

Modifier Description
i Perform case-insensitive matching
g Perform a global match (find all matches rather than stopping after the first match)
m Perform multiline matching

Expression Description
[abc] Find any character between the brackets
[^abc] Find any character not between the brackets
[0-9] Find any digit from 0 to 9
[A-Z] Find any character from uppercase A to uppercase Z
[a-z] Find any character from lowercase a to lowercase z
[A-z] Find any character from uppercase A to lowercase z
[adgk] Find any character in the given set
[^adgk] Find any character outside the given set
(red|blue|green) Find any of the alternatives specified

Metacharacter Description
. Find a single character, except newline or line terminator
\w Find a word character
\W Find a non-word character
\d Find a digit
\D Find a non-digit character
\s Find a whitespace character
\S Find a non-whitespace character
\b Find a match at the beginning/end of a word
\B Find a match not at the beginning/end of a word
\0 Find a NUL character
\n Find a new line character
\f Find a form feed character
\r Find a carriage return character
\t Find a tab character
\v Find a vertical tab character
\xxx Find the character specified by an octal number xxx
\xdd Find the character specified by a hexadecimal number dd
\uxxxx Find the Unicode character specified by a hexadecimal number xxxx

Quantifiers

Quantifier Description
n+ Matches any string that contains at least one n
n* Matches any string that contains zero or more occurrences of n
n? Matches any string that contains zero or one occurrences of n
n{X} Matches any string that contains a sequence of X n’s
n{X,Y} Matches any string that contains a sequence of X to Y n’s
n{X,} Matches any string that contains a sequence of at least X n’s
n$ Matches any string with n at the end of it
^n Matches any string with n at the beginning of it
?=n Matches any string that is followed by a specific string n
?!n Matches any string that is not followed by a specific string n

RegExp Object Properties

Property Description
global Specifies if the “g” modifier is set
ignoreCase Specifies if the “i” modifier is set
lastIndex The index at which to start the next match
multiline Specifies if the “m” modifier is set
source The text of the RegExp pattern

RegExp Object Methods

Method Description
compile() Compiles a regular expression
exec() Tests for a match in a string. Returns the first match
test() Tests for a match in a string. Returns true or false