diff options
Diffstat (limited to 'extra/mysql')
-rw-r--r-- | extra/mysql/PKGBUILD | 30 | ||||
-rw-r--r-- | extra/mysql/my.cnf | 145 | ||||
-rw-r--r-- | extra/mysql/mysql.install | 17 | ||||
-rwxr-xr-x | extra/mysql/mysqld-post.sh | 3 | ||||
-rw-r--r-- | extra/mysql/mysqld.service | 9 |
5 files changed, 37 insertions, 167 deletions
diff --git a/extra/mysql/PKGBUILD b/extra/mysql/PKGBUILD index ea07e72b2..6e6557d1c 100644 --- a/extra/mysql/PKGBUILD +++ b/extra/mysql/PKGBUILD @@ -1,30 +1,30 @@ -# $Id: PKGBUILD 176798 2013-01-31 15:46:51Z andrea $ +# $Id: PKGBUILD 178940 2013-03-01 05:59:24Z bpiotrowski $ # Maintainer: Andrea Scarpino <andrea@archlinux.org> # Contributor: Douglas Soares de Andrade <douglas@archlinux.org> pkgbase=mysql pkgname=('libmysqlclient' 'mysql-clients' 'mysql') pkgver=5.5.30 -pkgrel=1 +pkgrel=6 arch=('i686' 'x86_64') license=('GPL') url="https://www.mysql.com/products/community/" makedepends=('cmake' 'openssl' 'zlib') options=('!libtool') -source=("http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.5/${pkgbase}-${pkgver}.tar.gz" - 'my.cnf' 'mysqld-post.sh' 'mysqld-tmpfile.conf' 'mysqld.service') -md5sums=('f0cdd56f89e781e800cf223bd9edd00c' - '1351485633baf9894cfdf7c5bbffd7b5' - '6ea6ceb360d09a774e87335ee098ddd5' - '2fa6e456964d4ff5e6d4f9ff0126aed6' - 'a0e1460c276a50a9666c331de83271f2') +source=(http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.5/${pkgbase}-${pkgver}.tar.gz{,.asc} + mysqld-post.sh + mysqld-tmpfile.conf + mysqld.service) +sha256sums=('909fe596e0044082a02d2757b742a33b8a3ff399b589603940494d3d3d975053' + '27d3bba7b7f54f9f77cddba81a3fe124aeef918cc09eb28860338e9a4359e6f7' + '368f9fd2454d80eb32abb8f29f703d1cf9553353fb9e1ae4529c4b851cb8c5dd' + '2af318c52ae0fe5428e8a9245d1b0fc3bc5ce153842d1563329ceb1edfa83ddd' + '50212165bdb09855b97b15a917464ba34f82edf30a0c43f9a0c93a27071df556') build() { mkdir build cd build - # CFLAGS/CXXFLAGS as suggested upstream - cmake ../${pkgbase}-${pkgver} \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ @@ -53,9 +53,9 @@ build() { -DWITH_EMBEDDED_SERVER=ON \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ + -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ + -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ - -DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 \ - -DWITHOUT_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \ -DCMAKE_C_FLAGS="-fPIC ${CFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer" \ -DCMAKE_CXX_FLAGS="-fPIC ${CXXFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti" @@ -107,7 +107,7 @@ package_mysql(){ cd build make DESTDIR="${pkgdir}" install - install -Dm644 "${srcdir}"/my.cnf "${pkgdir}"/etc/mysql/my.cnf + install -Dm644 "${pkgdir}"/usr/share/mysql/my-medium.cnf "${pkgdir}"/etc/mysql/my.cnf install -Dm755 "${srcdir}"/mysqld-post.sh "${pkgdir}"/usr/bin/mysqld-post install -Dm644 "${srcdir}"/mysqld-tmpfile.conf "${pkgdir}"/usr/lib/tmpfiles.d/mysqld.conf install -d "${pkgdir}"/usr/lib/systemd/system @@ -127,5 +127,5 @@ package_mysql(){ rm -r "${pkgdir}"/usr/{data,mysql-test,sql-bench} rm "${pkgdir}"/usr/share/man/man1/mysql-test-run.pl.1 - install -dm700 "${pkgdir}"/var/lib/mysql + #install -dm700 "${pkgdir}"/var/lib/mysql } diff --git a/extra/mysql/my.cnf b/extra/mysql/my.cnf deleted file mode 100644 index 387020858..000000000 --- a/extra/mysql/my.cnf +++ /dev/null @@ -1,145 +0,0 @@ -# MySQL config file for medium systems. -# -# This is for a system with little memory (32M - 64M) where MySQL plays -# an important part, or systems up to 128M where MySQL is used together with -# other programs (such as a web server) -# -# MySQL programs look for option files in a set of -# locations which depend on the deployment platform. -# You can copy this option file to one of those -# locations. For information about these locations, see: -# http://dev.mysql.com/doc/mysql/en/option-files.html -# -# In this file, you can use all long options that a program supports. -# If you want to know which options a program supports, run the program -# with the "--help" option. - -# The following options will be passed to all MySQL clients -[client] -#password = your_password -port = 3306 -socket = /run/mysqld/mysqld.sock - -# Here follows entries for some specific programs - -# The MySQL server -[mysqld] -port = 3306 -socket = /run/mysqld/mysqld.sock -datadir = /var/lib/mysql -skip-external-locking -key_buffer_size = 16M -max_allowed_packet = 1M -table_open_cache = 64 -sort_buffer_size = 512K -net_buffer_length = 8K -read_buffer_size = 256K -read_rnd_buffer_size = 512K -myisam_sort_buffer_size = 8M - -# Don't listen on a TCP/IP port at all. This can be a security enhancement, -# if all processes that need to connect to mysqld run on the same host. -# All interaction with mysqld must be made via Unix sockets or named pipes. -# Note that using this option without enabling named pipes on Windows -# (via the "enable-named-pipe" option) will render mysqld useless! -# -skip-networking - -# Replication Master Server (default) -# binary logging is required for replication -log-bin=mysql-bin - -# binary logging format - mixed recommended -binlog_format=mixed - -# required unique id between 1 and 2^32 - 1 -# defaults to 1 if master-host is not set -# but will not function as a master if omitted -server-id = 1 - -# Replication Slave (comment out master section to use this) -# -# To configure this host as a replication slave, you can choose between -# two methods : -# -# 1) Use the CHANGE MASTER TO command (fully described in our manual) - -# the syntax is: -# -# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>, -# MASTER_USER=<user>, MASTER_PASSWORD=<password> ; -# -# where you replace <host>, <user>, <password> by quoted strings and -# <port> by the master's port number (3306 by default). -# -# Example: -# -# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, -# MASTER_USER='joe', MASTER_PASSWORD='secret'; -# -# OR -# -# 2) Set the variables below. However, in case you choose this method, then -# start replication for the first time (even unsuccessfully, for example -# if you mistyped the password in master-password and the slave fails to -# connect), the slave will create a master.info file, and any later -# change in this file to the variables' values below will be ignored and -# overridden by the content of the master.info file, unless you shutdown -# the slave server, delete master.info and restart the slaver server. -# For that reason, you may want to leave the lines below untouched -# (commented) and instead use CHANGE MASTER TO (see above) -# -# required unique id between 2 and 2^32 - 1 -# (and different from the master) -# defaults to 2 if master-host is set -# but will not function as a slave if omitted -#server-id = 2 -# -# The replication master for this slave - required -#master-host = <hostname> -# -# The username the slave will use for authentication when connecting -# to the master - required -#master-user = <username> -# -# The password the slave will authenticate with when connecting to -# the master - required -#master-password = <password> -# -# The port the master is listening on. -# optional - defaults to 3306 -#master-port = <port> -# -# binary logging - not required for slaves, but recommended -#log-bin=mysql-bin - -# Uncomment the following if you are using InnoDB tables -#innodb_data_home_dir = /var/lib/mysql -#innodb_data_file_path = ibdata1:10M:autoextend -#innodb_log_group_home_dir = /var/lib/mysql -# You can set .._buffer_pool_size up to 50 - 80 % -# of RAM but beware of setting memory usage too high -#innodb_buffer_pool_size = 16M -#innodb_additional_mem_pool_size = 2M -# Set .._log_file_size to 25 % of buffer pool size -#innodb_log_file_size = 5M -#innodb_log_buffer_size = 8M -#innodb_flush_log_at_trx_commit = 1 -#innodb_lock_wait_timeout = 50 - -[mysqldump] -quick -max_allowed_packet = 16M - -[mysql] -no-auto-rehash -# Remove the next comment character if you are not familiar with SQL -#safe-updates - -[myisamchk] -key_buffer_size = 20M -sort_buffer_size = 20M -read_buffer = 2M -write_buffer = 2M - -[mysqlhotcopy] -interactive-timeout diff --git a/extra/mysql/mysql.install b/extra/mysql/mysql.install index a98f1a877..907e98656 100644 --- a/extra/mysql/mysql.install +++ b/extra/mysql/mysql.install @@ -1,15 +1,24 @@ +if [[ $(command -v my_print_defaults >/dev/null 2>&1) ]]; then + datadir=$(my_print_defaults mysqld | sed -n "s/^--datadir=//p") +fi +[[ -z $datadir ]] && datadir=/var/lib/mysql + post_install(){ groupadd -g 89 mysql &>/dev/null - useradd -u 89 -g mysql -d /var/lib/mysql -s /bin/false mysql &>/dev/null - usr/bin/mysql_install_db --user=mysql --basedir=/usr - chown -R mysql:mysql var/lib/mysql &>/dev/null + useradd -u 89 -g mysql -d $datadir -s /bin/false mysql &>/dev/null + + if [[ ! -e $datadir ]]; then + install -dm700 $datadir + usr/bin/mysql_install_db --user=mysql --basedir=/usr --datadir=$datadir + chown -R mysql:mysql var/lib/mysql &>/dev/null + fi usr/bin/systemd-tmpfiles --create mysqld.conf } post_upgrade(){ getent group mysql >/dev/null 2>&1 || groupadd -g 89 mysql &>/dev/null - getent passwd mysql >/dev/null 2>&1 || useradd -u 89 -g mysql -d /var/lib/mysql -s /bin/false mysql &>/dev/null + getent passwd mysql >/dev/null 2>&1 || useradd -u 89 -g mysql -d $datadir -s /bin/false mysql &>/dev/null if [ "$(vercmp $2 5.5)" -lt 0 ]; then echo " >> " diff --git a/extra/mysql/mysqld-post.sh b/extra/mysql/mysqld-post.sh index 8dc9c4eea..c4ac18171 100755 --- a/extra/mysql/mysqld-post.sh +++ b/extra/mysql/mysqld-post.sh @@ -1,7 +1,8 @@ #!/bin/sh while true; do - response=`/usr/bin/mysqladmin -uUNKNOWN_USER ping 2>&1` && break + response=$(/usr/bin/mysqladmin -uUNKNOWN_USER ping 2>&1) && break echo "$response" | grep -q "mysqld is alive" && break + echo "$response" | grep -q "Access denied for user" && break sleep 1 done diff --git a/extra/mysql/mysqld.service b/extra/mysql/mysqld.service index 0175c685b..a6fc8cf88 100644 --- a/extra/mysql/mysqld.service +++ b/extra/mysql/mysqld.service @@ -1,11 +1,16 @@ [Unit] -Description=MySQL Server +Description=MySQL database server +After=syslog.target [Service] User=mysql -ExecStart=/usr/bin/mysqld --user=mysql +Group=mysql + +ExecStart=/usr/bin/mysqld --pid-file=/run/mysqld/mysqld.pid ExecStartPost=/usr/bin/mysqld-post + Restart=always +PrivateTmp=true [Install] WantedBy=multi-user.target |