OpenDKIM setup. (#196)
* OpenDKIM setup. see #173 * Fixed unit tests. * Fixed mysql syntax.
This commit is contained in:
@@ -60,9 +60,11 @@ class PostgreSQL(Database):
|
||||
def _exec_query(self, query, dbname=None, dbuser=None, dbpassword=None):
|
||||
"""Exec a postgresql query."""
|
||||
cmd = "psql"
|
||||
if dbname and dbuser:
|
||||
self._setup_pgpass(dbname, dbuser, dbpassword)
|
||||
cmd += " -h {} -d {} -U {} -w".format(self.dbhost, dbname, dbuser)
|
||||
if dbname:
|
||||
cmd += " -d {}".format(dbname)
|
||||
if dbuser:
|
||||
self._setup_pgpass(dbname, dbuser, dbpassword)
|
||||
cmd += " -h {} -U {} -w".format(self.dbhost, dbuser)
|
||||
query = query.replace("'", "'\"'\"'")
|
||||
cmd = "{} -c '{}' ".format(cmd, query)
|
||||
utils.exec_cmd(cmd, sudo_user=self.dbuser)
|
||||
@@ -94,6 +96,12 @@ class PostgreSQL(Database):
|
||||
query = "GRANT ALL ON DATABASE {} TO {}".format(dbname, user)
|
||||
self._exec_query(query)
|
||||
|
||||
def grant_right_on_table(self, dbname, table, user, right):
|
||||
"""Grant specific right to user on table."""
|
||||
query = "GRANT {} ON {} TO {}".format(
|
||||
right.upper(), table, user)
|
||||
self._exec_query(query, dbname=dbname)
|
||||
|
||||
def _setup_pgpass(self, dbname, dbuser, dbpasswd):
|
||||
"""Setup .pgpass file."""
|
||||
if self._pgpass_done:
|
||||
@@ -114,10 +122,9 @@ class PostgreSQL(Database):
|
||||
def load_sql_file(self, dbname, dbuser, dbpassword, path):
|
||||
"""Load SQL file."""
|
||||
self._setup_pgpass(dbname, dbuser, dbpassword)
|
||||
utils.exec_cmd(
|
||||
"psql -h {} -d {} -U {} -w < {}".format(
|
||||
self.dbhost, dbname, dbuser, path),
|
||||
sudo_user=self.dbuser)
|
||||
cmd = "psql -h {} -d {} -U {} -w < {}".format(
|
||||
self.dbhost, dbname, dbuser, path)
|
||||
utils.exec_cmd(cmd, sudo_user=self.dbuser)
|
||||
|
||||
|
||||
class MySQL(Database):
|
||||
@@ -125,7 +132,7 @@ class MySQL(Database):
|
||||
"""MySQL backend."""
|
||||
|
||||
packages = {
|
||||
"deb": ["mariadb-server", "libmysqlclient-dev"],
|
||||
"deb": ["mariadb-server"],
|
||||
"rpm": ["mariadb", "mariadb-devel", "mariadb-server"],
|
||||
}
|
||||
service = "mariadb"
|
||||
@@ -140,6 +147,8 @@ class MySQL(Database):
|
||||
if name == "debian":
|
||||
mysql_name = "mysql" if version.startswith("8") else "mariadb"
|
||||
self.packages["deb"].append("lib{}client-dev".format(mysql_name))
|
||||
elif name == "ubuntu":
|
||||
self.packages["deb"].append("libmysqlclient-dev")
|
||||
super(MySQL, self).install_package()
|
||||
if name == "debian" and version.startswith("8"):
|
||||
package.backend.preconfigure(
|
||||
@@ -200,6 +209,12 @@ class MySQL(Database):
|
||||
"GRANT ALL PRIVILEGES ON {}.* to '{}'@'localhost'"
|
||||
.format(dbname, user))
|
||||
|
||||
def grant_right_on_table(self, dbname, table, user, right):
|
||||
"""Grant specific right to user on table."""
|
||||
query = "GRANT {} ON {}.{} TO '{}'@'%'".format(
|
||||
right.upper(), dbname, table, user)
|
||||
self._exec_query(query)
|
||||
|
||||
def load_sql_file(self, dbname, dbuser, dbpassword, path):
|
||||
"""Load SQL file."""
|
||||
utils.exec_cmd(
|
||||
|
||||
Reference in New Issue
Block a user