程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Ubuntu12.04 以通用可執行文件(Generic Binaries)安裝MySQL,ubuntu12.04

Ubuntu12.04 以通用可執行文件(Generic Binaries)安裝MySQL,ubuntu12.04

編輯:MySQL綜合教程

Ubuntu12.04 以通用可執行文件(Generic Binaries)安裝MySQL,ubuntu12.04


本文是對Ubuntu環境下安裝MySQL的記錄,通過這兩天的折騰,不斷試錯,才發現要完整地掌握MySQL安裝其實並不復雜,關鍵是遇到問題時記住到官方文檔尋找解決方案,在網絡上搜索的網友的方法不一定適合你,而官方文檔是比較全面的,好了,廢話不多說,開始安裝MySQL吧。

 

選擇安裝版本:

[http://dev.mysql.com/doc/refman/5.6/en/choosing-version.html]

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 Section 2.2, “Installing MySQL on Unix/Linux Using Generic Binaries” 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 mysqld server data Log files, databases docs Manual in Info format man Unix manual pages include Include (header) files lib Libraries scripts mysql_install_db 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

以上安裝命令是全部的動作,一共分為三部分,每一步驟的解釋都有對應的官方文檔,以下一步一步來做

2.2 Installing MySQL on Unix/Linux Using Generic Binaries

//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

Section 2.10, “Postinstallation Setup and Testing”.

------------>2.10.1 Postinstallation Procedures for Unix-like Systems

//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 mysql_install_db 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 mysql_install_db as root, include the --user option as shown. Otherwise, you should execute the script while logged in as mysql, in which case you can omit the --user 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 Section 2.10.1.2, “Starting and Stopping MySQL Automatically”. 如下:

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

,,Invoke mysqld_safe, which tries to determine the proper options for mysqld and then runs it with those options. This script is used on Unix and Unix-like systems. SeeSection 4.3.2, “mysqld_safe — MySQL Server Startup Script”.

,,Invoke mysql.server. 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 mysql.server script starts the server by invoking mysqld_safe. See Section 4.3.3, “mysql.server — MySQL Server Startup Script”.

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

;以root權限運行
shell> mysql.server start                  
shell> mysql.server stop

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

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 mysql.server 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 mysql.server manually, copy it to the/etc/init.d directory with the namemysql, and then make it executable. Do this by changing location into the appropriate directory wheremysql.server 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:[https://tools.percona.com/]yhL#66     關於如何使用配置文件(如my.cnf),可以查看4.2.6 Using Option Files;而對配置文件中詳細選項的了解,For a full description of MySQL Server command options, system variables, and status variables, see Section 5.1, “The MySQL Server”.

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

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 --defaults-extra-file=path, 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 SYSCONFDIR 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 mysqld_safe program, mysqld_safe attempts to set MYSQL_HOME as follows:

  • Let BASEDIR and DATADIR represent the path names of the MySQL base directory and data directory, respectively.

  • If there is a my.cnf file in DATADIR but not in BASEDIR, mysqld_safe sets MYSQL_HOME to DATADIR.

  • Otherwise, if MYSQL_HOME is not set and there is no my.cnf file in DATADIR, mysqld_safe sets MYSQL_HOME to BASEDIR.

In MySQL 5.6, use of DATADIR as the location for my.cnf is deprecated.摒棄

Typically, DATADIR is /usr/local/mysql/data for a binary installation or /usr/local/var for a source installation. Note that this is the data directory location that was specified at configuration time, not the one specified with the --datadir option when mysqld starts. Use of --datadir at runtime has no effect on where the server looks for option files, because it looks for them before processing any options.

MySQL looks for option files in the order just described and reads any that exist. If an option file that you want to use does not exist, create it with a plain text editor.

If multiple instances of a given option are found, the last instance takes precedence. There is one exception: For mysqld, the first instance of the --user option is used as a security precaution, to prevent a user specified in an option file from being overridden on the command line.

Note

On Unix platforms, MySQL ignores configuration files that are world-writable. This is intentional as a security measure.

Any long option that may be given on the command line when running a MySQL program can be given in an option file as well. To get the list of available options for a program, run it with the --help option.

The syntax for specifying options in an option file is similar to command-line syntax (see Section 4.2.4, “Using Options on the Command Line”). However, in an option file, you omit the leading two dashes from the option name and you specify only one option per line. For example, --quick and --host=localhost on the command line should be specified as quick and host=localhost on separate lines in an option file. To specify an option of the form --loose-opt_name in an option file, write it as loose-opt_name.

If an option group name is the same as a program name, options in the group apply specifically to that program. For example, the [mysqld] and [mysql] groups apply to the mysqld server and the mysql client program, respectively.

The [client] option group is read by all client programs (but not by mysqld). This enables you to specify options that apply to all clients. For example, [client] is the perfect group to use to specify the password that you use to connect to the server. (But make sure that the option file is readable and writable only by yourself, so that other people cannot find out your password.) Be sure not to put an option in the [client] group unless it is recognized by all client programs that you use. Programs that do not understand the option quit after displaying an error message if you try to run them.

[插播,了解配置文件中那些單個選項的意義]see Section 5.1, “The MySQL Server”.自己看吧。

回到[https://tools.percona.com/]繼續生成my.cnf,其中,data directory設置為/usr/local/mysql/data,我的my.cnf文件:

 設置前,data文件夾裡的文件(以備日後查看):

drwxr-xr-x  5 mysql mysql     4096 Oct  9 08:54 ./
drwxr-xr-x 13 root  mysql     4096 Oct  7 20:16 ../
-rw-rw----  1 mysql mysql       56 Oct  7 21:25 auto.cnf
-rw-rw----  1 mysql mysql 12582912 Oct  9 08:54 ibdata1
-rw-rw----  1 mysql mysql 50331648 Oct  9 08:54 ib_logfile0
-rw-rw----  1 mysql mysql 50331648 Oct  7 20:42 ib_logfile1
drwx------  2 mysql mysql     4096 Oct  7 20:42 mysql/
-rw-r-----  1 mysql mysql    19610 Oct  9 08:54 ovonel-usa.err
-rw-rw----  1 mysql mysql        5 Oct  9 08:54 ovonel-usa.pid
drwx------  2 mysql mysql     4096 Oct  8 10:53 performance_schema/
drwxr-xr-x  2 mysql mysql     4096 Oct  7 16:34 test/

最後網站生成的配置文件如下:

 1 # Generated by Percona Configuration Wizard (http://tools.percona.com/) version REL5-20120208
 2 # Configuration name server-dev-binary-1009 generated for #**********@163.com at 2014-10-09 04:32:10
 3 
 4 [mysql]
 5 
 6 # CLIENT #
 7 port                           = 3306
 8 socket                         = /usr/local/mysql/data/mysql.sock
 9 
10 [mysqld]
11 
12 # GENERAL #
13 user                           = mysql
14 default-storage-engine         = InnoDB
15 socket                         = /usr/local/mysql/data/mysql.sock
16 pid-file                       = /usr/local/mysql/data/mysql.pid
17 
18 # MyISAM #
19 key-buffer-size                = 32M
20 myisam-recover                 = FORCE,BACKUP
21 
22 # SAFETY #
23 max-allowed-packet             = 16M
24 max-connect-errors             = 1000000
25 
26 # DATA STORAGE #
27 datadir                        = /usr/local/mysql/data/
28 
29 # BINARY LOGGING #
30 log-bin                        = /usr/local/mysql/data/mysql-bin
31 expire-logs-days               = 14
32 sync-binlog                    = 1
33 
34 # CACHES AND LIMITS #
35 tmp-table-size                 = 32M
36 max-heap-table-size            = 32M
37 query-cache-type               = 0
38 query-cache-size               = 0
39 max-connections                = 500
40 thread-cache-size              = 50
41 open-files-limit               = 65535
42 table-definition-cache         = 4096
43 table-open-cache               = 4096
44 
45 # INNODB #
46 innodb-flush-method            = O_DIRECT
47 innodb-log-files-in-group      = 2
48 innodb-log-file-size           = 64M
49 innodb-flush-log-at-trx-commit = 1
50 innodb-file-per-table          = 1
51 innodb-buffer-pool-size        = 128M
52 
53 # LOGGING #
54 log-error                      = /usr/local/mysql/data/mysql-error.log
55 log-queries-not-using-indexes  = 1
56 slow-query-log                 = 1
57 slow-query-log-file            = /usr/local/mysql/data/mysql-slow.log

 在6中,If you installed MySQL using a source distribution, you may want to optionally copy one of the provided configuration files from the support-files directory into your /etc directory. There are different sample configuration files for different use cases, server types, and CPU and RAM configurations. If you want to use one of these standard files, you should copy it to /etc/my.cnf, or /etc/mysql/my.cnf and edit and check the configuration before starting your MySQL server for the first time.

這裡我將生成的my.cnf復制到/etc/mysql目錄下:

$ sudo mkdir /etc/msql
$ pwd
/etc/mysql
$ sudo vi my.cnf             ;;然後將上面的配置文件內容復制粘貼

Section 2.10.1.2, “Starting and Stopping MySQL Automatically”.       You can add options for mysql.server in a global /etc/my.cnf file. A typical /etc/my.cnf file might look like this:   [這裡我修改自己對應的/etc/mysql/my.cnf,添加到末尾]

[mysqld]

# GENERAL #
user                                   = mysql
default-storage-engine           = InnoDB
socket                                = /usr/local/mysql/data/mysql.sock
pid-file                               = /usr/local/mysql/data/mysql.pid

;..........................
# LOGGING #
log-error                              = /usr/local/mysql/data/mysql-error.log
log-queries-not-using-indexes   = 1
slow-query-log                      = 1
slow-query-log-file                 = /usr/local/mysql/data/mysql-slow.log

[mysql.server]

# BASE DIRECTORY #
basedir=/usr/local/mysql

The mysql.server script supports the following options: basedir, datadir, and pid-file. If specified, they must be placed in an option file, not on the command line. mysql.server supports only start and stop as command-line arguments.

The following table shows which option groups the server and each startup script read from option files.

Table 2.15 MySQL Startup scripts and supported server option groups

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

至此,Section 2.10.1.2, “Starting and Stopping MySQL Automatically”. 一節基本上就練習完了。返回2.10.1 Postinstallation Procedures for Unix-like Systems接著做第7步。

7. Start the MySQL Server:

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

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

8. Use mysqladmin 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 mysqld_safe or by invoking mysqld 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文件存在。具體解釋請看:B.5.2.2 Can't connect to [local] MySQL server。鏈接中給出的解釋:

Someone has removed the Unix socket file that mysqld 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 mysqladmin version to check whether the Unix socket file that mysqladmin 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 Section B.5.4.5, “How to Protect or Change the MySQL Unix Socket File”. 結合這段分析,我的問題糾正就從這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 Section 2.10.2, “Securing the Initial MySQL Accounts”.待做完安全設置,再返回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 Section 10.6, “MySQL Server Time Zone Support”.

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 Section 4.2.10, “Setting Environment Variables”.

 

 

------------>2.10.2 Securing the Initial MySQL Accounts

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 --skip-name-resolve 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:

  • You should assign a password to each MySQL root account.

  • If you want to prevent clients from connecting as anonymous users without a password, you should either assign a password to each anonymous account or else remove the accounts.

Note For additional information about setting passwords, see Section 6.3.5, “Assigning Account Passwords”. If you forget your root password after setting it, see Section B.5.4.1, “How to Reset the Root Password”.

Assigning root Account Passwords

 The root account passwords can be set several ways. The following discussion demonstrates three methods:

  • Use the SET PASSWORD statement

  • Use the UPDATE statement

  • Use the mysqladmin 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 FLUSH statement causes the server to reread the grant tables. Without it, the password change remains unnoticed by the server until you restart it.

詳細方法請移步:2.10.2 Securing the Initial MySQL Accounts。

Assigning Anonymous Account Passwords

The mysql 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 SET PASSWORD or UPDATE. Be sure to encrypt the password using the PASSWORD() function.

To use SET PASSWORD 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)
 詳細方法請移步:2.10.2 Securing the Initial MySQL Accounts。

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.2.10.2 Securing the Initial MySQL Accounts文末說的刪除test數據庫,我這裡不做。   [6.1.2.1 End-User Guidelines for Password Security]     On Unix, the mysql client writes a record of executed statements to a history file (see Section 4.5.1.3, “mysql Logging”). 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 CREATE USER, GRANT, and SET PASSWORD, 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完成上面未完成的事情了(“時區”和“環境變量”設置) ----->2.10.1 Postinstallation Procedures for Unix-like Systems

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 Section 10.6, “MySQL Server Time Zone Support”.[這留到以後要用到的時候再做]

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 Section 4.2.10, “Setting Environment Variables”.    [[Section 2.12, “Environment Variables”說,In many cases, it is preferable to use an option file instead of environment variables to modify the behavior of MySQL. See Section 4.2.6, “Using Option Files”. ]]

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. 

 

(完)

 

 

 


ubuntu1204安裝mysql時發生依賴錯誤

怎麼不用apt,直接用deb,你要先解決依賴問題,把mysql所有依賴包安裝一遍
安裝到指定的路徑下面 請你man dpkg 查詢一下或者 dpkg --h
 

ubuntu 1204下已經安裝好mysql,怎可以夠將數據庫文件還原到 指定的數據庫下

這個就不確定了,你的數據庫文件是什麼,sql腳本,還是myd,frm之類的文件,前者可以直接通過source命令去還原,後者如果涉及到ibdata之類的innodb表空間文件,那就沒法搞了
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved