%general-entities; ]> $LastChangedBy$ $Date$ MySQL-&mysql-version; MySQL Introduction to MySQL MySQL is a widely used and fast SQL database server. It is a client/server implementation that consists of a server daemon and many different client programs and libraries. There may be a more recent release available from the MySQL home page. You can check and probably use the existing BLFS instructions. Note that versions other than the one shown in the download URLs have not been tested in a BLFS environment. &lfssvn_checked;20100806&lfssvn_checked2; Package Information Download (HTTP): Download (FTP): Download MD5 sum: &mysql-md5sum; Download size: &mysql-size; Estimated disk space required: &mysql-buildsize; Estimated build time: &mysql-time; Additional Download Required Patch: MySQL Dependencies Recommended Optional User Notes: Installation of MySQL For security reasons, running the server as an unprivileged user and group is strongly encouraged: groupadd -g 40 mysql && useradd -c "MySQL Server" -d /dev/null -g mysql -s /bin/false \ -u 40 mysql There are a great many options available to ./configure. Check the output of the option for additional customization options. Build and install MySQL by running the following commands: patch -Np1 -i ../mysql-&mysql-version;-makefile-1.patch && CFLAGS="-O3" \ CXX=gcc \ CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr \ --sysconfdir=/etc \ --libexecdir=/usr/sbin \ --localstatedir=/srv/mysql \ --enable-thread-safe-client \ --enable-assembler \ --enable-local-infile \ --with-unix-socket-path=/var/run/mysql/mysql.sock \ --without-debug \ --without-readline \ --with-plugins=innobase,myisam \ --with-extra-charsets=all \ --with-ssl && make To test the results, issue: make test-force 2>&1 | tee test.log. This forces the test to run to completion and logs all the test output. There will be many tests that are not run due to configuration options and developer considerations. Note that if you use TCP Wrappers and have a restrictive /etc/hosts.deny file, you will need to add an appropriate entry to the /etc/hosts.allow file for the mysqld daemon. Otherwise many of the tests will fail. Now, as the root user: make benchdir_root=/tmp/mysql-bench install && rm -rf /tmp/mysql && pushd /usr/lib && ln -v -sf mysql/libmysqlclient{,_r}.so* . && popd && pushd /usr/share/info && rm -v dir && for FILENAME in *; do install-info $FILENAME dir 2>/dev/null done && popd The only documentation shipped in the source tarball are mysql.info and man pages. You can download various formats of the MySQL Reference Manual from . Command Explanations CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti": These optimizations are recommended by th edevelopers. --libexecdir=/usr/sbin: This switch installs the mysqld daemon and the mysqlmanager program in an appropriate location. --localstatedir=/srv/mysql: This switch forces MySQL to use /srv/mysql for database files and other variable data. --enable-thread-safe-client: This switch compiles a thread-safe MySQL client library. --enable-assembler: This switch allows using assembler versions of some string functions. --enable-local-infile: This switch enables the LOAD DATA INFILE SQL statement. --with-unix-socket-path=/var/run/mysql: This switch puts the unix-domain socket into the /var/run/mysql directory instead of the default /tmp. --without-readline: This switch forces the build to use the system copy of readline instead of the bundled copy. --with-extra-charsets=all: This switch enables international character sets within the suite. --with-plugins=innobase,myisam: This switch enables two useful table types. Check ./configure --help for other table types. --with-ssl: This switch enables encrypted communication between client and server. make benchdir_root=...: This installs the benchmark and test suites in a non-system location. ln -v -sf mysql/libmysqlclient{,_r}.so* .: This command makes the MySQL shared libraries available to other packages at run-time. : This switch adds OpenSSL support to MySQL. : This switch adds tcpwrappers support to MySQL. pushd ... popd: This set of commands rebuilds the /usr/share/info/dir file as the installation failed to do so. Configuring MySQL Config Files /etc/my.cnf and ~/.my.cnf ~/.my.cnf /etc/my.cnf Configuration Information There are several default configuration files available in /usr/share/mysql which you can use. Create /etc/my.cnf using the following command as the root user: install -v -m644 /usr/share/mysql/my-medium.cnf /etc/my.cnf sed -i -e s/^skip-federated/#skip-federated/ /etc/my.cnf The change to /etc/my.cnf can be omitted if the option is used. You can now install a database and change the ownership to the unprivileged user and group (perform as the root user): mysql_install_db --user=mysql && chgrp -v mysql /srv/mysql{,/test,/mysql} Further configuration requires that the MySQL server is running. Start the server using the following commands as the root user: install -v -m755 -o mysql -g mysql -d /var/run/mysql && mysqld_safe --user=mysql 2>&1 >/dev/null & A default installation does not set up a password for the administrator, so use the following command as the root user to set one. Replace <new-password> with your own. mysqladmin -u root password <new-password> Configuration of the server is now finished. Shut the server down using the following command as the root user: mysqladmin -p shutdown Boot Script Install the /etc/rc.d/init.d/mysql init script included in the package as the root user to start the MySQL server during system boot-up. mysql make install-mysql Contents Installed Programs Installed Libraries Installed Directories comp_err, innochecksum, msql2mysql, my_print_defaults, myisam_ftdump, myisamchk, myisamlog, myisampack, mysql, mysql_client_test, mysql_config, mysql_convert_table_format, mysql_create_system_tables, mysql_explain_log, mysql_find_rows, mysql_fix_extensions, mysql_fix_privilege_tables, mysql_install_db, mysql_secure_installation, mysql_setpermission, mysql_tableinfo, mysql_tzinfo_to_sql, mysql_waitpid, mysql_zap, mysqlaccess, mysqladmin, mysqlbinlog, mysqlbug, mysqlcheck, mysqld, mysqld_multi, mysqld_safe, mysqldump, mysqldumpslow, mysqlhotcopy, mysqlimport, mysqlmanager, mysqlshow, mysqltest, mysqltestmanager, mysqltestmanager-pwgen, mysqltestmanagerc, perror, replace, resolve_stack_dump, and resolveip libdbug.a, libheap.a, libmyisam.a, libmyisammrg.a, libmysqlclient.{so,a}, libmysqlclient_r.{so,a}, libmystrings.a, libmysys.a, and libvio.a /srv/mysql, /usr/include/mysql, /usr/lib/mysql, /usr/share/mysql, and /var/run/mysql Short Descriptions Descriptions of all the programs and libraries would be several pages long. Instead, consult the mysql.info documentation or the on-line reference manual at . The Perl DBI modules must be installed for some of the MySQL support programs to function properly.