[MYSQL] créer un utilisateur et une base

Vous allez râler, dire que je ne cherche pas assez.
Cependant, je manque juste énormément de confiance en ce qui concerne les bases de données.

Je souhaites une commande qui permette créer un utilisateur MySQL “roundcubemail” avec les droits sur une base associée (disons “roundcubemail”).
Le tout en 1 seule commande.

C’est une bête série de requêtes SQL ([mono]CREATE DATABASE[/mono], [mono]INSERT INTO mysql.user[/mono], …) que tu exécutes ensuite via la commande [mono]mysql[/mono]. N’oublie pas [mono]FLUSH PRIVILEGES[/mono] à la fin.
Faut juste se documenter… Le plus simple est probablement de faire les opérations “à la main” dans phpMyAdmin, puis de voir ce qui a changé et faire tes requêtes en fonction de ça.

Là pour le coup ça donne un peu cette impression effectivement. :stuck_out_tongue:
Mais c’est difficile de te répondre car c’est le genre de trucs qu’on a du mal à garder en tête, faut obligatoirement se référer à la doc…

Navré, vraiment, mais je fais un blocage là dessus. Encore les commandes, j’arrive à en comprendre la logique, mais là c’est du charabia pour moi. J’ai l’impression de me retrouver à nouveau pour la première fois devant une console à recopier des commandes trouvées sur le net, et ne pas comprendre le “command not found”.

Bon je crois que le mieux, ce serait de trouver une mini formation sur les BDD, genre site du zero pour y voir plus clair et ne pas faire mon ch…

Bon, tu sais manipuler phpMyAdmin non ?

  • fais un export de la base [mono]mysql[/mono] pour pouvoir comparer plus tard
  • crée ta base [mono]roundcube[/mono] avec tous les attributs que tu veux (si je ne m’abuse, il n’y a que l’encodage çàd [mono]unicode_general_ci[/mono] ou un truc comme ça)
  • fais un export de la base [mono]roundcube[/mono] (vide), note la requête SQL correspondante ([mono]CREATE DATABASE IF NOT EXISTS roundcube …[/mono])
  • crée ton utilisateur, donne lui les droits que tu veux
  • fais un nouvel export de la base [mono]mysql[/mono], fais un diff avec la première version pour voir ce qui a changé
  • rajoute un [mono]FLUSH PRIVILEGES[/mono] à la fin de tout ça

Au pire si t’es vraiment paumé, fais ce que je t’ai dit et poste les résultats ici (enfin juste le diff et le [mono]CREATE DATABASE[/mono], pas les deux dump de la base [mono]mysql[/mono] complets) et on avisera.

Quand même, un grand garçon comme toi qui a peur d’une bête base de données, alors que tu bouffes du Linux au p’tit déj’, j’y crois pas vraiment… (oui je te charrie :teasing-neener:)

Tu rigole ? Il y a un paquet de brutes qui se pissent dessus quand ils entendent parler de SQL. Le problème c’est qu’ils ne le reconnaissent pas et tentent de cacher leur derrière des excusent techniques plus ou moins sorties du chapeau.

Bien sûr que je rigole, je le chambre gentiment c’est tout. :wink: Mais y’a aussi un fond de vérité : le SQL c’est pas bien terrible (du moins les fonctions basiques comme ici, après si on pousse ça peut effectivement devenir beaucoup plus compliqué), le seul vrai obstacle c’est uniquement la peur de l’inconnu.
Je suis bien placé pour le savoir vu le nombre de trucs nouveaux que j’ai dû ingurgiter cette année : je me suis pissé dessus plus d’une fois parce que je sortais de ma “zone de confort” habituelle* mais au final quand on garde la tête froide on s’aperçoit que tout se passe bien. :slightly_smiling:

* Genre apprendre Perl à partir de rien en une semaine pour un RDV d’embauche, ça m’en avait touché une sans faire bouger l’autre (zone de confort : programmation impérative classique). Par contre passer d’un modèle multithread avec I/O bloquantes, à un modèle monothread avec seulement des IRQ pour gérer les I/O, je te raconte pas l’état du calbut’. :mrgreen: Et pourtant, avec le recul, apprendre Perl était largement plus compliqué !

:text-threadjacked:

[quote=“syam”]Bon, tu sais manipuler phpMyAdmin non ?
[/quote]
Quand je dis que je n’y connais rien en base de données, c’est vraiment rien. Même phpmyadmin.
Là je sens vraiment que je vais être un boulet à vous coller le retour de commandes que je ne comprend pas.

La seule question pertinent pour l’instant, c’est “avez-vous un tuto pour débutant” sous la main? Sinon je soignerai mon ignorance dès que j’aurais du temps pour chercher :wink:

Comme le précise Syam, Le SQL n’est pas SI compliqué que ça tant que l’on reste dans les opérations de base, de table ou d’utilisateur.

http://baptiste-wicht.developpez.com/tutoriels/sql/debutant/

http://sql.developpez.com/

Bonne lecture à toi :wink:

Merci Clochette, je me fie à tes sources et je reviens avec mes questions.

[quote=“thuban”][quote=“syam”]Bon, tu sais manipuler phpMyAdmin non ?
[/quote]
Quand je dis que je n’y connais rien en base de données, c’est vraiment rien. Même phpmyadmin.[/quote]
Surtout continue comme ça phpMyAdmin c’est utile dans des cas particulier, pas dans le tiens. Il y a des tonnes d’alternatives avec un client lourd pour accéder à ta base de données.

Si tu ne veux pas te faire peur avec un serveur tu peut regarder LibreOffice Base, voir l’utiliser pour accéder à ta base de données MySQL.

Ok, j’avais pas compris ta question comme ça, je pensais que tu avais quand même un minimum de bases. :wink:
D’où le fait que j’ai mentionné phpMyAdmin, car c’est l’outil qu’on retrouve chez tous les hébergeurs pour gérer les bases MySQL et il y avait d’énormes chances que tu y aies déjà touché.

Du coup, oui on peut te filer la réponse “clé en mains” à ta question, si c’est ce que tu veux. Mais je te conseille évidemment de te former un minimum sur les bases SQL, car c’est quelque chose de vraiment très utile et ça te resservira régulièrement en développement. :slightly_smiling:

[quote=“thuban”]Vous allez râler, dire que je ne cherche pas assez.
Cependant, je manque juste énormément de confiance en ce qui concerne les bases de données.

Je souhaites une commande qui permette créer un utilisateur MySQL “roundcubemail” avec les droits sur une base associée (disons “roundcubemail”).
Le tout en 1 seule commande.[/quote]
Il faut nous donner les droits que tu souhaites pour l’utilisateur, si tu veux qu’il soit utilisé sur la machine locale, sur une ou des bases de données etc…
Le SQL c’est assez simple, en fait disons plutôt intuitif… mais pas la gestion de base de données. C’est à manipuler avec précautions autant que Debian :mrgreen: . De mauvais droits et c’est la galère. Sur une base de données, oublier les contraintes ca devient du n’importe quoi ! (et j’ai une anecdote interessante là dessus croyez moi ca fait peur !!!) Il faut faire attention, et je pense que c’était bien de venir demander conseil :023

Pour ta question :

GRANT ALL PRIVILEGES ON *.* TO 'ton_nom_user'@'localhost' IDENTIFIED BY 'un_mot_de_passe' WITH GRANT OPTION;

Donc là tu créer un super administrateur ‘ton_nom_user’ qui a :
Tous les droits sur le serveur et donc toutes les bases de données (GRANT ALL ON TABASE.* si tu veux que ca soit juste sur la base de données TABASE)
Sur la machine locale. (donc localhost, pour changer ce statut : ‘ton_nom_user’@’%’)

L’inverse de GRANT c’est REVOKE.
Tape GRANT ou REVOKE sur google si tu veux des renseignements, tu tomberas sur une page détaillée de mysql.com
Si je me trompe je suis désolé, j’ai passé une très sale journée et j’ai un peu la tête dans le cul et le cul dans les nuages … :mrgreen:

Comme déjà conseillé, phpMyAdmin est très bien, mais cela nécessite tout de même des connaissances ! surtout pour des droits d’utilisateurs, création de tables, etc… sans connaissance, a part faire du SQL (et encore, que du SELECT, sinon ca risque de vite partir en sucette si c’est des UPDATE, DELETE…)

Merci pour vos réponses, qui pourront m’aider à me repérer dans les tutos que je vais lire.
D’autant plus merci si tu as passé une mauvaise journée! Tâche de passer une bonne soirée :wink:

[quote=“thuban”]Merci pour vos réponses, qui pourront m’aider à me repérer dans les tutos que je vais lire.
D’autant plus merci si tu as passé une mauvaise journée! Tâche de passer une bonne soirée :wink:[/quote]

Coté tuto : www-fr.mysql.com/ très bien détaillé. Je peux aussi t’envoyer les cours que j’ai suivi en école d’ingé que j’ai gardé. (je garde tout de tout, heureusement que là c’est numérique parceque ma compagne aurait pété des cases :016 ) il y a quelques infos intéressantes si tu veux approfondir tes connaissances en SQL. (si tu les veux, envoie moi un MP, par contre, c’est essentiellement sur le SQL pour la gestion de base de données, peu ou pas sur la gestion d’users - pas sûr sur ca - mais si tu veux te cultiver sur le SQL c’est sympas)

Sinon pour la petite anecdote que je parlais, j’hébergeais gratuitement le jeu d’un webmaster amateur il y a quelques années. Son jeu a commencé a être un peu connu, mais consommait beaucoup TROP de ressources (en comparaison avec mes jeux). Il m’a demandé conseil, je lui ai demandé comment il avait géré les contraintes… Vu sa réponse j’en ai conclus qu’il n’y en avait aucune. Son jeu avec 2000 users actifs 2 fois moins développé consommait autant qu’un de mes jeux similaire mais avec 20.000 users actifs. J’ai pu faire cette comparaison exacte car il m’a cédé son jeu quelques temps après. Avec la même base de données, en y mettant ce qu’il faut, on multiplie la vitesse bien comme il faut … En gros on pourrait dire qu’on passerait d’un hébergement à 200€ par mois à 5€ par mois (prix d’il y a 3/4 ans). Ou bien autre comparaison on passe d’un windows à Debian :049 (un peu plus représentatif non ?) donc juste pour dire le SQL, les base de données, c’est “facile”, mais quand on veut faire quelque chose de sécurisé et performant, il faut le faire correctement !!!

Merci je profite de ma soirée bien comme il faut :030 :030 :030
Si tu as besoin de renseignements, surtout n’hésite pas, j’adore la gestion de base de données :049

Vu ce que tu dis ça ressemble plus à des indexs, non ? “Contraintes” je comprends ça comme “clés étrangères”, mais c’est peut-être juste moi. :mrgreen:

Vu ce que tu dis ça ressemble plus à des indexs, non ? “Contraintes” je comprends ça comme “clés étrangères”, mais c’est peut-être juste moi. :mrgreen:[/quote]
Les contraintes d’intégrité regroupent les not null, clé primaire, clé unique, clé étrangère, check…
Les index peuvent être des clé primaire, unique et les index. Donc déjà on voit la subtilité.
Les index sont utilisés pour trouver des résultats plus rapidement sur une colonne. Mais si ils sont utilisés sur toutes les colonnes au final ca ne vaut plus rien. Surtout en sachant que cela augmente le stockage. (mais bon de nos jours ce n’est plus un problème donc ce dernier point on oublie totalement, même si sur des colonnes n’étant pas utilisées par des WHERE restent une perte de perf)
Les contraintes c’est beaucoup plus que les simples “clés étrangères” :wink:
Il n’y a que l’index de l’index qui sort du lot…et encore comme je l’ai dit, ca reste une “contrainte” dans le sens de la contrainte de bien l’utiliser :mrgreen: :mrgreen: :mrgreen: … la clé primaire ou unique par exemple inclus “d’office un index”… donc index de index c’est un abus de langage pour considérer qu’il ne faut pas l’utiliser pour le foutre n’importe où… comme ses pairs !

J’espère que je n’ai pas dit n’importe quoi, je suis encore plus :030 :mrgreen:

EDIT : mais dans tous les cas, les index, c’est sur les trois toujours utilisés !! et de toute façon tout le reste aussi :mrgreen: tout est important, d’où mon message :mrgreen: :mrgreen: j’aimerais vous donner des stats de tests, mais en ce moment vraiment pas le temps snifffff! j’en avais fait a une époque mais je n’ai pas gardé les stats! C’est dommage j’ai eu souvent l’occasion de tester des diffèrences de perfs assez énorme mais jamais sauvegardés les résultats :mrgreen: (j’aurais du … :smiley: )

Effectivement, pour “contrainte” j’avais oublié les clés primaires / uniques / not null etc, au temps pour moi.
Enfin bref, on parle bien de la même chose au final. :slightly_smiling: Faut pas trop s’étonner que je sois un peu à l’ouest sur les termes, j’ai tout appris sur le tas sans aucune formation formelle. :mrgreen:

[quote=“syam”]Effectivement, pour “contrainte” j’avais oublié les clés primaires / uniques / not null etc, au temps pour moi.
Enfin bref, on parle bien de la même chose au final. :slightly_smiling: Faut pas trop s’étonner que je sois un peu à l’ouest sur les termes, j’ai tout appris sur le tas sans aucune formation formelle. :mrgreen:[/quote]
C’est assez subtil, et du coup je suis content que tu as posté pour préciser ! comme je l’ai dit j’ai utilisé un abus de langage et je te remercie de m’avoir repris :wink: il fallait le préciser :041

Au final on parle effectivement de la même chose !! ou presque… :mrgreen: (car ou oublie souvent le reste, et je te l’accorde, c’est souvent le cas !!!) il y a des “index”… qui ne sont que des index… mais il y a aussi clé primaire ou unique qui sont aussi des index et tout aussi important…

[quote=“thuban”]Vous allez râler, dire que je ne cherche pas assez.
Cependant, je manque juste énormément de confiance en ce qui concerne les bases de données.

Je souhaites une commande qui permette créer un utilisateur MySQL “roundcubemail” avec les droits sur une base associée (disons “roundcubemail”).
Le tout en 1 seule commande.[/quote]

Moi aussi ça me permet de réviser le peu de mysql/mariadb que je connais :stuck_out_tongue:

mysql -u root -p <<EOF
CREATE DATABASE mabase;
GRANT ALL PRIVILEGES ON mabase.* TO 'admindemabase'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT 
EOF

la doc qui va bien : mariadb.com/kb/en/sql-commands/

PS : à la place de phpmyadmin bien lourdingue, il y a Adminer

Salut,

[mono]mysql> create database nom_de_la_la_base;

mysql> GRANT ALL PRIVILEGES ON nom_de_la_la_base.* TO ‘admin_base’@‘localhost’ IDENTIFIED BY ‘MDP_du_compte_admin_base’;

mysql> flush privileges;

mysql> quit;[/mono]