您的位置:首页 > 博客中心 > 数据库 >

Ubuntu12.04 以通用可执行文件(Generic Binaries)安装MySQL

时间:2022-03-14 00:51

选择安装版本:

[]

Normally, if you are beginning to use MySQL for the first time or trying to port it to some system for which there is no binary distribution, use the most recent General Availability series listed in the preceding descriptions.由此,本文选择安装MySQL 5.6: Latest General Availability (Production) release

MySQL 安装选择上说:“We put a great deal of effort into ensuring that our binaries are built with the best possible options for optimal performance.”,由此可知,Generic Binaries安装有诸多优化,所以我们按此链接来做,Installing from a generic binary package in.tar.gzformat.

See for more information.

下载http://dev.mysql.com/downloads/mysql/#current-tab,我的系统是64位的,对应Linux - Generic (glibc 2.5) (x86, 64-bit), Compressed TAR Archive,下载mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz,md5值79f9a54bdc3731fd4bdf22db77f27ca7

Warning

If you have previously installed MySQL using your operating system native package management system, such as yum or apt-get, you may experience problems installing using a native binary. Make sure your previous MySQL previous installation has been removed entirely (using your package management system), and that any additional files, such as old versions of your data files, have also been removed. You should also check the existence of configuration files such as /etc/my.cnf or the /etc/mysql directory have been deleted.

sudo apt-get autoremove --purge mysql-server-5.5 
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common

Table 2.3 MySQL Installation Layout for Generic Unix/Linux Binary Package

DirectoryContents of Directory
bin Client programs and the server
data Log files, databases
docs Manual in Info format
man Unix manual pages
include Include (header) files
lib Libraries
scripts
share Miscellaneous support files, including error messages, sample configuration files, SQL for database installation
sql-bench Benchmarks

记得删除之前安装所残余的mysql文件,然后:

To install and use a MySQL binary distribution, the basic command sequence looks like this:

//Create a mysql User and Group
shell> groupadd mysql
shell> useradd -r -g mysql mysql

//Obtain and Unpack the Distribution
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql

//Perform Postinstallation Setup
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .

shell> apt-get install libaio1 libaio-dev
shell> ./scripts/mysql_install_db --user=mysql

shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server

以上安装命令是全部的动作,一共分为三部分,每一步骤的解释都有对应的官方文档,以下一步一步来做


//Create a mysql User and Group
shell> groupadd mysql
shell> useradd -r -g mysql mysql

//Obtain and Unpack the Distribution
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql

.

------------>

//Perform Postinstallation Setup
1.
shell> cd mysql

2.(以root权限运行)
shell> chown -R mysql .
shell> chgrp -R mysql .

3.(以root权限运行)
shell> apt-get install libaio1 libaio-dev
shell> ./scripts/mysql_install_db --user=mysql

3.The program creates the server‘s data directory with mysql as the owner. Under the data directory, it creates directories for the mysql database that holds the grant tables and the test database that you can use to test MySQL.The script also creates privilege table entries for root and anonymous-user accounts. The accounts have no passwords initially.

It is important to make sure that the database directories and files are owned by the mysql login account so that the server has read and write access to them when you run it later. To ensure this if you run as root, include the option as shown. Otherwise, you should execute the script while logged in as mysql, in which case you can omit the option from the command.

4.Most of the MySQL installation can be owned by root if you like. The exception is that the data directory must be owned by mysql. To accomplish this, run the following commands as root in the installation directory:

4.(以root权限运行)
shell> chown -R root .
shell> chown -R mysql data

5.暂无

6.If you want MySQL to start automatically when you boot your machine, you can copy support-files/mysql.server to the location where your system has its startup files. More information can be found in the mysql.server script itself, and in. 如下:

Generally, you start the server in one of these ways:

,,Invoke , which tries to determine the proper options for and then runs it with those options. This script is used on Unix and Unix-like systems. See.

,,Invoke . This script is used primarily at system startup and shutdown on systems that use System V-style run directories (that is,/etc/init.d and run-level specific directories), where it usually is installed under the name mysql. The script starts the server by invoking . See .

To start or stop the server manually using the script, invoke it with start or stop arguments:

;以root权限运行
shell> mysql.server start                  
shell> mysql.server stop

Before starts the server, it changes location to the MySQL installation directory, and then invokes.

To start and stop MySQL automatically on your server, you need to add start and stop commands to the appropriate places in your /etc/rc* files. 接着看下文,

If you install MySQL from a source distribution or using a binary distribution format that does not install automatically, you can install it manually. The script can be found in the support-files directory under the MySQL installation directory or in a MySQL source tree.

To install manually, copy it to the/etc/init.d directory with the name, and then make it executable. Do this by changing location into the appropriate directory where is located and executing these commands:

;以root权限运行
shell> cp ./support-files/mysql.server /etc/init.d/mysql
shell> chmod +x /etc/init.d/mysql

After installing the script, the commands needed to activate it to run at system startup depend on your operating system. On Linux, you can use chkconfig(Ubuntu对此不再提供支持,有一个替代的是sysv-rc-conf,见下文):

shell> chkconfig --add mysql      ;不做此项,请接着看下面

For other systems, consult your operating system documentation to see how to install startup scripts.

sudo apt-get install sysv-rc-conf
cd /etc/init.d
sudo sysv-rc-conf atd on

Ubuntu下已经以sysv-rc-conf替代chkconfig了,执行sysv-rc-conf有图形和命令行两种格式,命令行格式如下:

# sysv-rc-conf --level 35 ssh off
# sysv-rc-conf atd on

The first example will turn ssh off on levels 3 and 5. The second example turns atd on for run levels 2, 3, 4, and 5.

# sysv-rc-conf --list mysql       ;;可查看mysql的执行等级

在进行第七步之前,我们需要在 my.cnf 中设置一下 mysql.server,先来生成一个my.cnf,这里我们使用一个在线生成配置文件的网站,它为你方便地提供了优化了的 my.cnf:[]yhL#66     关于如何使用配置文件(如my.cnf),可以查看;而对配置文件中详细选项的了解,For a full description of MySQL Server command options, system variables, and status variables, see .

[插播,了解一下如何使用Option Files,即配置文件.cnf]

On Unix, Linux and Mac OS X, MySQL programs read startup options from the following files, in the specified order (top items are used first).

File NamePurpose
/etc/my.cnf Global options
/etc/mysql/my.cnf Global options
SYSCONFDIR/my.cnf Global options
$MYSQL_HOME/my.cnf Server-specific options
defaults-extra-file The file specified with , if any
~/.my.cnf User-specific options
~/.mylogin.cnf Login path options

~ represents the current user‘s home directory (the value of $HOME).

SYSCONFDIR represents the directory specified with the option to CMake when MySQL was built. By default, this is the etc directory located under the compiled-in installation directory.

MYSQL_HOME is an environment variable containing the path to the directory in which the server-specific my.cnf file resides. If MYSQL_HOME is not set and you start the server using the program, attempts to set MYSQL_HOME as follows:

    ScriptOption Groups [mysqld], [server], [mysqld-major_version] [mysqld], [server], [mysqld_safe] [mysqld], [mysql.server], [server]

    至此,. 一节基本上就练习完了。返回接着做第7步。

    7. Start the MySQL Server:

    shell> bin/mysqld_safe --user=mysql &          ;;需要以root权限运行

    To ensure this if you run as root, include the option as shown.

    8. Use to verify that the server is running. The following commands provide simple tests to check whether the server is up and responding to connections:

    shell> bin/mysqladmin version
    shell> bin/mysqladmin variables

    运行结果:

    $ ./bin/mysqladmin version
    ./bin/mysqladmin  Ver 8.42 Distrib 5.6.21, for linux-glibc2.5 on x86_64
    Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Server version        5.6.21
    Protocol version    10
    Connection        Localhost via UNIX socket
    UNIX socket        /tmp/mysql.sock
    Uptime:            2 hours 6 min 27 sec
    
    Threads: 1  Questions: 2  Slow queries: 0  Opens: 67  Flush tables: 1  Open tables: 60  Queries per second avg: 0.000

    9. Verify that you can shut down the server:

    $ ./bin/mysqladmin -u root shutdown
    验证一下是否关闭了
    $ ./bin/mysqladmin version
    ./bin/mysqladmin: connect to server at ‘localhost‘ failed
    error: ‘Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)‘
    Check that mysqld is running and that the socket: ‘/tmp/mysql.sock‘ exists!
    $ ./bin/mysqladmin variables
    ./bin/mysqladmin: connect to server at ‘localhost‘ failed
    error: ‘Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)‘
    Check that mysqld is running and that the socket: ‘/tmp/mysql.sock‘ exists!

     10. Verify that you can start the server again. Do this by using or by invoking directly. For example:

    $ ./bin/mysqld_safe --user=mysql  &       ;;需要以root权限运行
    $ sudo netstat -tap | grep mysql
    tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      30506/mysqld

    进行验证,

    shell> bin/mysqladmin version 
    shell> bin/mysqladmin variables

    执行之后出错:

    ./bin/mysqladmin: connect to server at ‘localhost‘ failed
    error: ‘Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)‘
    Check that mysqld is running and that the socket: ‘/tmp/mysql.sock‘ exists!

    解释的原因是不能通过‘/tmp/mysql.sock‘连接到localhost,执行ls /tmp -l果然没有mysql.sock文件存在。具体解释请看:。链接中给出的解释:

    Someone has removed the Unix socket file that uses (/tmp/mysql.sock by default). For example, you might have a cron job that removes old files from the /tmp directory. You can always run to check whether the Unix socket file that is trying to use really exists. The fix in this case is to change the cron job to not remove mysql.sock or to place the socket file somewhere else. See . 结合这段分析,我的问题纠正就从这B.5.4.5来做:

    The default location for the Unix socket file that the server uses for communication with local clients is /tmp/mysql.sock.

    On some versions of Unix, anyone can delete files in the /tmp directory or other similar directories used for temporary files. If the socket file is located in such a directory on your system, this might cause problems.

    Another approach is to change the place where the server creates the Unix socket file. If you do this, you should also let client programs know the new location of the file. You can specify the file location in several ways:

    (1)Specify the path in a global or local option file. For example, put the following lines in /etc/my.cnf,我的是/etc/mysql/my.cnf:这样,我的my.cnf末尾就成下面这样了:

    # Added by yh@2014-10-10 #
    [mysql.server]
    
    # BASE DIRECTORY #
    basedir=/usr/local/mysql
    
    # GENERAL #
    socket=/usr/local/mysql/data/mysql.sock
    
    # Added by yh@2014-10-10 #
    [client]
    
    socket=/usr/local/mysql/data/mysql.sock

    之后测试成功:

    $ sudo ./bin/mysqladmin version

    接着做11步,

    11. Run some simple tests to verify that you can retrieve information from the server. The output should be similar to what is shown here:

    $ ./bin/mysqlshow 
    +--------------------+
    |     Databases      |
    +--------------------+
    | information_schema |
    | test               |
    +--------------------+

    以下不做,直接跳过到13步:

    13. At this point, you should have the server running. However, none of the initial MySQL accounts have a password, and the server permits permissive access to test databases. To tighten security, follow the instructions in .待做完安全设置,再返回2.10.1完成本节剩下的,先跨过下面两段。

    The MySQL 5.6 installation procedure creates time zone tables in the mysql database but does not populate them. To do so, use the instructions in .

    To make it more convenient to invoke programs installed in the bin directory under the installation directory, you can add that directory to your PATH environment variable setting. That enables you to run a program by typing only its name, not its entire path name. See .

     

     

    ------------>

    The mysql.user grant table defines the initial MySQL user accounts and their access privileges:

    root用户:Some accounts have the user name root. These are superuser accounts that have all privileges and can do anything. The initial root account passwords are empty, so anyone can connect to the MySQL server as root without a password and be granted all privileges.

    On Unix, each root account permits connections from the local host. Connections can be made by specifying the host name localhost, the IP address 127.0.0.1, the IPv6 address ::1, or the actual host name or IP address.      An attempt to connect to the host 127.0.0.1 normally resolves to the localhost account. However, this fails if the server is run with the option, so the 127.0.0.1 account is useful in that case. The ::1 account is used for IPv6 connections.

    匿名用户:Some accounts are for anonymous users. These have an empty user name. The anonymous accounts have no password, so anyone can use them to connect to the MySQL server.

    On Unix, each anonymous account permits connections from the local host. Connections can be made by specifying a host name of localhost for one of the accounts, or the actual host name or IP address for the other.

    To display which accounts exist in the mysql.user table and check whether their passwords are empty, use the following statement:

    ;;启动mysqld先
    $ sudo netstat -tap | grep mysql               ;;查看是否有mysqld已经存在
    $ sudo ./bin/mysqld_safe --user=mysql &
    $ sudo ./bin/mysqladmin version                ;;验证一下启动正常不
    $ sudo ./bin/mysql                             ;;root权限运行才可
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3
    Server version: 5.6.21-log MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
    
    mysql> SELECT User, Host, Password FROM mysql.user;
    
    +------+--------------------+----------+
    | User | Host               | Password |
    +------+--------------------+----------+
    | root | localhost          |          |
    | root | myhost.example.com |          |
    | root | 127.0.0.1          |          |
    | root | ::1                |          |
    |      | localhost          |          |
    |      | myhost.example.com |          |
    +------+--------------------+----------+

    your MySQL installation is unprotected until you do something about it:

    • Use the statement

    • Use the statement

    • Use the command-line client program

    For Unix, do this:

    mysql> SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘newpwd‘);
    mysql> UPDATE mysql.user SET Password = PASSWORD(‘newpwd‘)
        ->     WHERE User = ‘root‘;
    mysql> FLUSH PRIVILEGES;

    The statement causes the server to reread the grant tables. Without it, the password change remains unnoticed by the server until you restart it.

    详细方法请移步:。

    Assigning Anonymous Account Passwords

    The commands in the following instructions include a -p option based on the assumption that you have set the root account passwords using the preceding instructions and must specify that password when connecting to the server.否则会报错:[与此类似,以后执行mysql, mysqladmin, mysqld_safe 等程序都需带参数-p]

    $ sudo ./bin/mysql
    [sudo] password for xxxx: 
    ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)

    To assign passwords to the anonymous accounts, connect to the server as root, then use either or . Be sure to encrypt the password using the function.

    To use on Unix, do this:

    /usr/local/mysql$ sudo ./bin/mysql -u root -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 5
    Server version: 5.6.21-log MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
    
    mysql> UPDATE mysql.user SET Password = PASSWORD(‘newpwd‘)
        ->     WHERE User = ‘‘;
    Query OK, 2 rows affected (0.06 sec)
    Rows matched: 2  Changed: 2  Warnings: 0

    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.06 sec)
     详细方法请移步:。

    Securing Test Databases

    By default, the mysql.db table contains rows that permit access by any user to the test database and other databases with names that start with test_. (These rows have an empty User column value, which for access-checking purposes matches any user name.) This means that such databases can be used even by accounts that otherwise possess no privileges. If you want to remove any-user access to test databases, do so as follows:

    sudo ./bin/mysql -u root -p
    Enter password: (enter root password here)
    mysql> DELETE FROM mysql.db WHERE Db LIKE ‘test%‘;
    Query OK, 2 rows affected (0.04 sec)

    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.06 sec)
    With the preceding change, only users who have global database privileges or privileges granted explicitly for the test database can use it.文末说的删除test数据库,我这里不做。   []     On Unix, the client writes a record of executed statements to a history file (see ). By default, this file is named .mysql_history and is created in your home directory. Passwords can be written as plain text in SQL statements such as , , and , so if you use these statements, they are logged in the history file. To keep this file safe, use a restrictive access mode, the same way as described earlier for the .my.cnf file.
    sudo chmod 600 ~/.mysql_history
      现在是时候返回2.10.1完成上面未完成的事情了(“时区”和“环境变量”设置) ----->

    The MySQL 5.6 installation procedure creates time zone tables in the mysql database but does not populate them. To do so, use the instructions in .[这留到以后要用到的时候再做]

    To make it more convenient to invoke programs installed in the bin directory under the installation directory, you can add that directory to your PATH environment variable setting. That enables you to run a program by typing only its name, not its entire path name. See .    [[说,In many cases, it is preferable to use an option file instead of environment variables to modify the behavior of MySQL. See . ]]

    The commands to set environment variables can be executed at your command prompt to take effect immediately, but the settings persist only until you log out. To have the settings take effect each time you log in, use the interface provided by your system or place the appropriate command or commands in a startup file that your command interpreter reads each time it starts.

    On Unix, typical shell startup files are .bashrc or .bash_profile for bash, or .tcshrc for tcsh.

    $ echo $SHELL
    /bin/bash                             ;;显示我的shell是bash

    Suppose that your MySQL programs are installed in /usr/local/mysql/bin and that you want to make it easy to invoke these programs. To do this, set the value of the PATH environment variable to include that directory. For example, if your shell is bash, add the following line to your .bashrc file:

    $ vi ~/.bashrc
    在文末添加下行:
    PATH=${PATH}:/usr/local/mysql/bin
    bash uses different startup files for login and nonlogin shells, so you might want to add the setting to .bashrc for login shells and to .bash_profile for nonlogin shells to make sure that PATH is set regardless.

    If the appropriate startup file does not exist in your home directory, create it with a text editor. 

     

    (完)

     

     

     

热门排行

今日推荐

热门手游